Rails ActiveRecord:组合:include和:条件查询可能吗?

Wil*_*nes 6 activerecord ruby-on-rails include findall conditional-statements

想象一下,我有维基文章,有许多修订版.我想通过数据库使用ActiveRecord进行查询,该数据库仅返回那些具有过去24小时内更新的修订的文章.这样的事情可能吗?

我想它会是这样的:

Articles.find_all(:include => :revisions, 
                  :conditions => {:revision[updated_at] => 1.week.ago..Time.now.utc})
Run Code Online (Sandbox Code Playgroud)

如果这是不可能的,是否有某种类型的原始SQL我可以传递给find_by_SQL这样做?

Pet*_*own 4

如果您只需要文章而不需要立即加载所有修订版,则可以使用 :joins 代替。它使用较少的内存,因为它不会预加载每篇文章的所有修订。如果你要做类似的事情,请使用 :include article.revisions

Article.find(:all, 
  :joins => :revisions, 
  :conditions => ["revisions.updated_at > ?", 24.hours.ago]
)
Run Code Online (Sandbox Code Playgroud)