好的,所以我在Rails 3.1中有一个简单的has_many:through关系
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
如何在不运行每个事件的查询的情况下获取加入两个表(即邀请行)的记录?或者我需要引用Invite记录中的至少一列?
使用:include =&gt; :邀请包括每个事件的所有邀请。我只需要连接完成的那个。我搜索谷歌,找不到任何东西。我觉得这应该是一件很简单的事情。我错过了什么?
答案 0 :(得分:2)
只需从另一方获取它们:
Event
.includes ( :invites => :account )
.where ( :invites => {:accounts => {:id => current_account.id }} )
注意,在where
子句中,符号必须是复数(表名),而在includes
子句中,符号表示关联(复数如果has_many
,单数如果belongs_to
1}})。顺便说一句,根据铁路惯例,您的Invites
模型应该是单数(Invite
)。