Ruby on rails ActiveRecord与两种不同模型的关联
我很难理解应该如何配置我的表和关联 我有一个Ruby on rails ActiveRecord与两种不同模型的关联,ruby-on-rails,ruby,activerecord,ruby-on-rails-5,polymorphic-associations,Ruby On Rails,Ruby,Activerecord,Ruby On Rails 5,Polymorphic Associations,我很难理解应该如何配置我的表和关联 我有一个诉讼模型。诉讼有许多当事人(被告、原告、律师等)。反过来,一方可以是个人或公司。最终,我希望能够: 一个人的诉讼(@person.justions) 公司的诉讼(@company.justions);及 诉讼的当事人(@action.parties),可以是人或公司 这是我当前设置表格+模型的方式: 人 | id | fname | lname | date_of_birth | | -- | ------ | ----- | ---------
诉讼
模型。诉讼有许多当事人(被告、原告、律师等)。反过来,一方可以是个人
或公司
。最终,我希望能够:
- 一个人的诉讼(
)李>@person.justions
- 公司的诉讼(
);及@company.justions
- 诉讼的当事人(
),可以是@action.parties
或人
公司
| id | fname | lname | date_of_birth |
| -- | ------ | ----- | ------------- |
| 1 | John | Smith | 1974-02-04 |
| 2 | George | Glass | 1963-07-29 |
公司
| id | name | duns | ticker | address |
| -- | --------- | --------- | ------ | ------------ |
| 1 | Acme Inc. | 239423243 | ACME | 123 Main St. |
诉讼
| id | jurisdiction | court | case_no | title |
| -- | ------------ | ----- | ---------- | --------------------------- |
| 1 | federal | SDNY | 18-CV-1234 | Smith v. Glass, Acme, et al |
诉讼当事人
| id | lawsuit_id | person_id | company_id | role |
| -- | ---------- | --------- | ---------- | --------- |
| 1 | 1 | 1 | | plaintiff |
| 2 | 1 | 2 | | defendant |
| 3 | 1 | | 1 | defendant |
#models/justice.rb:
类诉讼<申请记录
有很多:诉讼当事人
def缔约方
自诉当事人
结束
被告
自身当事人(其中(诉讼当事人:{角色:'被告'})
结束
def原告
自身当事人(其中(诉讼当事人:{角色:'原告'})
结束
辩护律师
当事人(其中(诉讼当事人:{角色:'律师'})
结束
结束
#模型/诉讼方.rb
类当事人<申请记录
属于某人
属于:公司
结束
#models/person.rb
类人<应用记录
有很多:诉讼当事人
有很多:诉讼,通过诉讼当事人
结束
#models/company.rb
类别公司<申请记录
有很多:诉讼当事人
有很多:诉讼,通过诉讼当事人
结束
非常感谢您提供的任何帮助…您走上了正确的道路,但您需要在联接模型中引入一个新的方法,以使这种类型的建模工作起来,并提供您免费要求的几种作用域/方法
class LawsuitParty < ApplicationRecord
belongs_to :lawsuit
belongs_to :partiable, polymorphic: true
enum role: [:defendant, :plaintiff]
end
接下来,告诉Rails,个人
和公司
记录与许多诉讼
相关,使用有许多:作为
选项
class Person < ApplicationRecord
has_many :lawsuit_parties, as: :partiable
has_many :lawsuits, through: :lawsuit_parties
end
class-Person
添加相同的有许多:诉讼方,如::partiable
到公司,或以后可能出现的任何其他模式(即Judge
或JuryMember
)
一旦你有了这样的LawsuitParty设置,你就应该准备好了。我想这会让我达到目的,谢谢!要创建一个关联,@tuffice.tuffice\u parties很乐意提供帮助。你定义了parties
以映射到某个地方的LawsuitParty记录。这个错误告诉你,你正在尝试清除一条错误的记录输入该关联。我不完全了解您的DSL,但也许您是想@tustion.people啊,我输入了一个拼写错误。我在诉讼模型中添加了一个parties
方法,该方法返回self.tustion\u parties
)因此,我的问题是,一旦建立了关系和表格,将个人、公司等添加到诉讼当事人的标准方式是什么。例如,@tummit.tummit\u parties def parties;self.tummit\u parties;end-就是问题所在。要做到这一点,你不必过多地摆弄Rails,最简单的方法就是将“添加当事人”定义为(partiable:,role:)“关于诉讼的方法。定义如何在那里添加当事人。类似于self.tumming\u parties.create(args)
。
class Person < ApplicationRecord
has_many :lawsuit_parties, as: :partiable
has_many :lawsuits, through: :lawsuit_parties
end