想象一下,我有许多修订的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]
)