左外连接,ActiveRecord中有范围

时间:2012-10-23 11:59:54

标签: ruby-on-rails activerecord

我有两个相关的ActiveRecord模型:

class Channel < ActiveRecord::Base
  has_many :events
end

class Event < ActiveRecord::Base
  belongs_to :channel

  def self.current
    now = Time.now.utc
    where{(starts_at<=now)&(ends_at>=now)}
  end
end

我希望获得加入当前事件的Channel列表。对于单个Channel对象,我设法通过以下代码执行此操作:

> channel = Channel.first
> channel.events.current

完美无缺。但是我发现无法获取Channel s及其当前事件的集合,而不会遇到N + 1查询问题。

1 个答案:

答案 0 :(得分:0)

尝试

   channels = Channel.include(:events).all
   channels.events.current