2011-12-23 38 views
2

好了,所以我有一個簡單的has_many實錄:通過關係的Rails 3.1得到那個加入了2桌

class Event < ActiveRecord::Base 
    has_many :invites 

    [...] 
end 

class Account < ActiveRecord::Base 
    has_many :invites 
    has_many :events, :through => :invites 

    [...] 
end 

class Invite < ActiveRecord::Base 
    belongs_to :account 
    belongs_to :event 

    [...] 
end 

要獲得所有用戶的事件,我做

@events = current_account.events 

我如何獲得記錄加入了兩個表(即邀請行)而不運行每個事件的查詢?或者我需要引用來自邀請記錄的至少一列?

使用:include =>:invites包含每個事件的所有邀請。我只需要一個連接完成的人。我搜索谷歌並找不到任何東西。我覺得這應該是一個非常簡單的事情。我錯過了什麼?

+1

那麼你想邀請鏈接帳戶的事件? – thatmiddleway 2011-12-23 07:02:17

+0

@jtmkrueger是 – 2011-12-29 03:43:15

回答

2

剛剛從對方獲取它們:

Event 
    .includes (:invites => :account) 
    .where (:invites => {:accounts => {:id => current_account.id }}) 

要小心,where條款的符號必須是複數的(表名),而includes子句中的符號代表協會(複數如果has_many中,單數如果belongs_to)。順便說一句,你的Invites模型應根據軌道約定單數(Invite)。

+0

非常感謝! 並且邀請是模型名稱。 's'只是錯字。 – 2011-12-29 03:44:52