6

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

我想它会是这样的:

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

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

4

2 回答 2

4

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

Article.find(:all, 
  :joins => :revisions, 
  :conditions => ["revisions.updated_at > ?", 24.hours.ago]
)
于 2010-02-21T05:26:52.480 回答
3

根据您对模型命名的准确程度,它将是这样的。

Article.find(:all, :include => :revisions, :conditions => ["revisions.updated_at > ?", 1.week.ago])
于 2010-02-21T05:06:55.943 回答