想象一下,我有维基文章,有许多修订版。我想通过数据库使用ActiveRecord进行查询,该数据库仅返回那些具有过去24小时内更新的修订的文章。这样的事情有可能吗?
我想它会是这样的:
Articles.find_all(:include => :revisions,
:conditions => {:revision[updated_at] => 1.week.ago..Time.now.utc})
如果这是不可能的,是否有某种类型的原始SQL我可以传递给find_by_SQL,这样做会有什么作用?
答案 0 :(得分:4)
如果您只需要文章并且不需要急切加载所有修订版,则可以使用:join。它使用较少的内存,因为它没有预加载每篇文章的所有修订版。使用:如果您要执行article.revisions
之类的操作,请使用。
Article.find(:all,
:joins => :revisions,
:conditions => ["revisions.updated_at > ?", 24.hours.ago]
)
答案 1 :(得分:3)
根据您的模型的确切命名方式,它将会是这样的。
Article.find(:all, :include => :revisions, :conditions => ["revisions.updated_at > ?", 1.week.ago])