Ruby on rails Rails:如何在两个模型之间建立多个关联

Ruby on rails Rails:如何在两个模型之间建立多个关联,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我认为评论和用户之间存在以下关联: 因为我使用的是Deviate,所以我只保留了一个Users表,并使用client或seller列(布尔值)标识角色 因此,正如您所想象的,我需要知道进行审查的用户和被“审查”的用户 第一个问题是:我可以在创建迁移时使用引用吗?我手动创建了如下列:t.integer:client\u id,foreign\u key:true和t.integer:seller\u id,foreign\u key:true 第二个问题是:如何在模型中指定关系?我喜欢这个有很多

我认为评论和用户之间存在以下关联:

因为我使用的是Deviate,所以我只保留了一个Users表,并使用client或seller列(布尔值)标识角色

因此,正如您所想象的,我需要知道进行审查的用户和被“审查”的用户

第一个问题是:我可以在创建迁移时使用引用吗?我手动创建了如下列:
t.integer:client\u id,foreign\u key:true
t.integer:seller\u id,foreign\u key:true

第二个问题是:如何在模型中指定关系?我喜欢这个
有很多:评论,外键:“客户id”
有很多:评论,外键:“卖家id”
,但我不确定它是否正确。

以下是迁移的完整代码:

class CreateReviews
用户模型:

class用户
审查模式:

class Review

Rails版本:6.0.3.2-Ruby版本:2.6.6

我知道您想要实现什么

首先,在您的
CreateReviews
迁移中删除
foreign\u key:true
,因为它没有任何效果,所以您可能希望通过将其替换为
index:true
来索引这两列

然后在您的
模型中,用户有两个不同的
关联,例如

class用户
为什么会有两种不同的联想?因为当你有两个相同的关联时,它总是使用最后一个关联,因此会覆盖第一个关联

您可能希望在控制台中尝试并查看输出,对于您的情况,如果您检查查询,您将看到它正在使用
seller\u id
列查找评论,如果您尝试类似的操作

user=user.first
p user.reviews.to_sql
现在重构您的
Review
模型,使其具有如下特性

class Review
现在,您可以创建
client\u reviews
seller\u reviews
并查询每一个

seller=User.create(名称:'seller 1)
client=User.create(名称:“client 1”)
seller.seller\u reviews.create(描述:“我喜欢你的产品”,客户:客户)
回顾=回顾。首先
p.客户
p.卖方
希望它能帮助你了解你能做什么