在對象模型中,我有多的has_many:通過
has_many :likes
has_many :hates
has_many :users, :through => :likes
has_many :users, :through => :hates
如何獲得用戶的喜好列表?例如。 object.users < ---但我如何通過喜歡或討厭指定?
在對象模型中,我有多的has_many:通過
has_many :likes
has_many :hates
has_many :users, :through => :likes
has_many :users, :through => :hates
如何獲得用戶的喜好列表?例如。 object.users < ---但我如何通過喜歡或討厭指定?
你需要給這兩個不同的關聯不同的名字。什麼
has_many :likes
has_many :hates
has_many :likers, :through => :likes, :source => :user
has_many :haters, :through => :hates, :source => :user
你可以不喜歡它:
has_many :user_likes, :through => :likes, :class_name => 'User'
看來我需要添加源了。如果不是Rails將會喜歡like/liker。
has_many :likes
has_many :hates
has_many :likers, :through => :likes, :class_name => 'User', :source => 'user'
has_many :haters, :through => :hates, :class_name => 'User', :source => 'user'
這就是我想了,但是'has_many'的文檔(ActiveRecord的::協會:: ClassMethods)說:「':through'指定的關聯,通過它來執行查詢[.. 。]':class_name',':primary_key'和':foreign_key' **的選項被忽略**,因爲關聯使用源反射。「 - 所以,':class_name'不會做任何事情,是嗎? – fanaugen 2012-07-11 08:47:16
您是對的,我更新了示例以符合文檔,它引用了源關聯,從中可以推斷出它是User對象。 – 2012-07-11 09:35:21
我認爲':source =>:user'應該是':source =>:users'。 – 2016-04-24 13:09:01