嗨我真的很陌生,我試圖創建一個產品評級模型。導軌模型關係
因此,有用戶(姓名,電子郵件,PW)
用戶擁有的用戶已評級的產品清單。評分(1-10)和評論。
每個產品都有自己的描述,評估他們的用戶列表,評分和評論。
我該如何建立關係?我是否應該擁有3種型號,用戶,評級,產品,還是隻能通過用戶和產品獲得?
此外:has_many .etc關係會是什麼樣子?
嗨我真的很陌生,我試圖創建一個產品評級模型。導軌模型關係
因此,有用戶(姓名,電子郵件,PW)
用戶擁有的用戶已評級的產品清單。評分(1-10)和評論。
每個產品都有自己的描述,評估他們的用戶列表,評分和評論。
我該如何建立關係?我是否應該擁有3種型號,用戶,評級,產品,還是隻能通過用戶和產品獲得?
此外:has_many .etc關係會是什麼樣子?
這會爲has_many :through =>
用戶模型有很大的情況下。
User has_many :ratings
User has_many :products, :though => :ratings
Rating Rating Model。
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
!
這裏就是我會做
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
。