2
我們有一個「人」和「收藏」模型。
「收藏」是什麼這個人喜歡:「音樂」,「視頻」,「運動」,「互聯網」,「旅遊」等
「人」 HABTM「收藏夾」和「收藏」 HABTM「人」
,我需要找一個人,已全部上市的「收藏夾。例如,找一個人,一個喜歡‘音樂’,‘旅行’和‘運動’。
它如何使用ActiveRecord.find方法?
我們有一個「人」和「收藏」模型。
「收藏」是什麼這個人喜歡:「音樂」,「視頻」,「運動」,「互聯網」,「旅遊」等
「人」 HABTM「收藏夾」和「收藏」 HABTM「人」
,我需要找一個人,已全部上市的「收藏夾。例如,找一個人,一個喜歡‘音樂’,‘旅行’和‘運動’。
它如何使用ActiveRecord.find方法?
@people = Person.find(:all,
:joins => :favourites,
:select => "person.*, count(favourites) favourite_count",
:conditions => {:favourites => @array_of_favourites},
:group => "persons.id having favourite_count = #{@array_of_favourites.count}")
你需要這樣的東西才能找到全部收藏夾而不是收藏夾的任何組合。這是基於假設您擁有一組最喜歡的對象,而不是一組字符串。
導軌4兼容的解決方案:
@people = Person.joins(:favourites)
.where(favourites: { id: @array_of_favourites })
.group("people.id")
.having("count(favourites.id) = #{@array_of_favourites.count}")
感謝。好的解決方案 – AntonAL 2010-08-05 18:01:57