Ruby on rails Rails:如何在两个模型之间建立多个关联
我认为评论和用户之间存在以下关联: 因为我使用的是Deviate,所以我只保留了一个Users表,并使用client或seller列(布尔值)标识角色 因此,正如您所想象的,我需要知道进行审查的用户和被“审查”的用户 第一个问题是:我可以在创建迁移时使用引用吗?我手动创建了如下列: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 第二个问题是:如何在模型中指定关系?我喜欢这个有很多
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.卖方
希望它能帮助你了解你能做什么