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

我以为它会是这样的:

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

如果这不可能,那么是否可以通过某种类型的原始SQL传递给find_by_SQL来解决问题?

最佳答案

如果只需要本文,而又不需要急于加载所有修订版,则可以使用:joins来代替。它使用较少的内存,因为它没有为每个文章预加载所有修订。使用:include,但是如果您要执行类似article.revisions的操作。

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

10-07 12:55