Ruby on rails 数据库关联,案例模型有两个人

Ruby on rails 数据库关联,案例模型有两个人,ruby-on-rails,associations,Ruby On Rails,Associations,我有一个案例模型。此案例模型有一个客户和一个对手字段。 他们都是人模。一个案件只有一个当事人和一个对手。现在一个人可以是客户,也可以是对手,一个人可以有很多案例。 如何在rails中构建此关联?当我将人物模型分为客户模型和对手模型时,这似乎很容易,但对我来说,这并不是很枯燥 这就是我现在所拥有的 class Person < ActiveRecord::Base has_many :cases end class Case < ActiveRecord::Base bel

我有一个案例模型。此案例模型有一个客户和一个对手字段。 他们都是人模。一个案件只有一个当事人和一个对手。现在一个人可以是客户,也可以是对手,一个人可以有很多案例。 如何在rails中构建此关联?当我将人物模型分为客户模型和对手模型时,这似乎很容易,但对我来说,这并不是很枯燥

这就是我现在所拥有的

class Person < ActiveRecord::Base
  has_many :cases 
end

class Case < ActiveRecord::Base
  belongs_to :client, class_name: 'Person'
  belongs_to :opponent, class_name: 'Person'
end
到目前为止,我可以将客户和对手添加到案例中。 但我如何通过客户或对手找到所有案例

--旧的 当我有Client.first.cases时,我的sql查询是: -新的 当然,我指的是Person.first.cases——因为我没有客户表,所以我在Case表中的id称为客户id或对手id

从cases.person\u id=3的案例中选择案例。*

现在必须是客户id或对手id

感谢您在询问Client.first.cases时提供的帮助,在此查询活动记录中,您希望提取属于Person表的第一条记录(id为3)的所有案例。 person_id是client_id,因为person表中的第一个客户id是3

如果您将写:Client.first,那么在sql查询中您将看到:

SELECT person.* FROM person WHERE person_id = 3
我认为,您应该尝试在案例模型中传递一个外键约束,如下所示:

class Case < ActiveRecord::Base
  belongs_to :client, class_name: 'Person', foreign_key: "client_id"
  belongs_to :opponent, class_name: 'Person',foreign_key: "opponent_id"
end
谢谢。

~的最后10分钟~ 这里几乎是我对个人模型和消息模型问题的解释,其中消息模型有一个接收者id和一个发送者id。 在Case模型中不需要外键就可以回到我的问题,它需要在Person模型中这样做

class Person < ActiveRecord::Base
   has_many :cases, foreign_key: "client_id"
end
所以在Person对象上,我可以使用not Person.cases,我将得到所有的案例,其中此人是客户。
我仍然不知道如何获得案例,其中人是对手

对不起,我不是指客户。首先。案例,我是指人。首先。案例补充我的答案,应该会有帮助。不确定我是否遗漏了什么,但我无法找到一个人的所有案例。我必须提出我自己的问题吗?e、 类似于个人第一、客户第一或个人第一、对手第一的情况?