Rails ActiveRecord:是否可以组合:include和:conditions查询?

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

我想它会是这样的:

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

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

如果您只需要文章并且不需要急切加载所有修订版,则可以使用:join。 它使用较少的内存,因为它没有预加载每篇文章的所有修订版。 使用:包括虽然你会做类似article.revisions事情。

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

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

 Article.find(:all, :include => :revisions, :conditions => ["revisions.updated_at > ?", 1.week.ago])