2012-01-31 154 views
0

嗨我真的很陌生,我試圖創建一個產品評級模型。導軌模型關係

因此,有用戶(姓名,電子郵件,PW)

用戶擁有的用戶已評級的產品清單。評分(1-10)和評論。

每個產品都有自己的描述,評估他們的用戶列表,評分和評論。

我該如何建立關係?我是否應該擁有3種型號,用戶,評級,產品,還是隻能通過用戶和產品獲得?

此外:has_many .etc關係會是什麼樣子?

回答

1

這會爲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

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