您好我对rails非常陌生,我正在努力创建一个产品评级模型。
所以有用户(姓名,电子邮件,pw)
用户拥有用户评分的产品列表。评分(1-10)和评论。
每个产品都有其描述,评级的用户列表,评级和评论。
我应该如何创建关系?我应该拥有3个型号,用户,评级,产品,还是只使用用户和产品?
还有什么:has_many .etc关系看起来像?
答案 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
的案例!