Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails ActiveRecord与两种不同模型的关联_Ruby On Rails_Ruby_Activerecord_Ruby On Rails 5_Polymorphic Associations - Fatal编程技术网

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