铁轨模型关系

时间:2012-01-31 18:01:45

标签: ruby-on-rails

您好我对rails非常陌生,我正在努力创建一个产品评级模型。

所以有用户(姓名,电子邮件,pw)

用户拥有用户评分的产品列表。评分(1-10)和评论。

每个产品都有其描述,评级的用户列表,评级和评论。

我应该如何创建关系?我应该拥有3个型号,用户,评级,产品,还是只使用用户和产品?

还有什么:has_many .etc关系看起来像?

2 个答案:

答案 0 :(得分:3)

这就是我要做的事情

class User
  has_many :ratings
  has_many :products, :through => :ratings
end

class Product
  has_many :ratings
  has_many :users, :through => :ratings
end

class Rating
  belongs_to :user
  belongs_to :product
end

这样,如果您希望获得对产品进行评分的所有用户,您可以说product.users

答案 1 :(得分:1)

has_many :through =>

这是一个很好的例子

用户模型。

User has_many :ratings
User has_many :products, :though => :ratings

评级模型。

belongs_to :user
belongs_to :product

产品型号。

Product has_many :ratings
Product has_many :users, :through => ratings

n.b。现在这被认为优于has_and_belongs_to_many,许多人认为此时基本上已弃用。{ 就个人而言,我从来没有喜欢使用has_many_and_belongs_to,因为它的工作原理以及频繁的重新工作将其转换为has_many,:只要在连接模型上需要一个额外的属性(在此评级中)情况)。
实际上你想要一个评级'级别',所以你已经有了has_many, :through的案例!