2012-05-25 67 views
1

我不知道它是什麼,但我似乎不能算出這個在HABTM協會統計項目

什麼我堅持了是這樣的,我有兩個型號,其有一個HABTM協會對彼此。

class Event < ActiveRecord::Base 
    has_and_belongs_to_many :users 
end 

class User < ActiveRecord::Base 
    has_and_belongs_to_many :events 
end 

所以當我創建一個事件時,有幾個用戶與它關聯。假設用戶1和2有3個他們一起參加的活動。現在我想要計算這些實例。所以我想讓3號回到我身邊。

我想這應該是簡單的,但我不明白,有人可以指出我在正確的方向嗎?提前致謝。

+0

你的問題還不清楚。你想要計算什麼?用戶或事件? 「讓我們假設用戶1和2有3個他們一起參加的活動」涉及到「所以我想讓3號回來」?請更清楚地解釋你想要的。 – Mischa

+0

對不起,我不是很清楚。我試圖寫下一些不太複雜的東西。我猜這不是。我想計算(例如)用戶1和用戶2參加的事件。 – erroneousboat

回答

1

如果你想知道的常見事件的數量爲兩個用戶,那麼,沒有花哨的SQL,你可以這樣來做:

events1 = User.find(1).events.scoped 
events2 = User.find(2).events.scoped 

common_events_count = Event.where(id: events1).where(id: events2).count 
+0

非常感謝你,這正是我一直在尋找的! – erroneousboat

1

如果您要查找所有具有2個用戶共同的事件,則可以查詢所有事件,然後爲每個用戶過濾結果。

user1 = User.find(1) 
user2 = User.find(2) 
events = Event.all 
common_events = events.select {|e| e.users.include?(user1) and e.users.include?(user2)} 

變量common_events將包含user1和user2都參加的事件。

+0

感謝您的回覆,您的兩條建議都幫助我獲得了我想要的結果! – erroneousboat