Ruby on rails Rails ActiveRecord:是否可以组合:include和:conditions查询?
想象一下,我有很多修改过的wiki文章。我想通过数据库对ActiveRecord进行查询,它只返回那些在过去24小时内更新过的文章。这可能吗 我想象它会是这样的:Ruby on rails Rails ActiveRecord:是否可以组合:include和:conditions查询?,ruby-on-rails,activerecord,include,conditional-statements,findall,Ruby On Rails,Activerecord,Include,Conditional Statements,Findall,想象一下,我有很多修改过的wiki文章。我想通过数据库对ActiveRecord进行查询,它只返回那些在过去24小时内更新过的文章。这可能吗 我想象它会是这样的: Articles.find_all(:include => :revisions, :conditions => {:revision[updated_at] => 1.week.ago..Time.now.utc}) 如果这是不可能的,是否有某种类型的原始SQL我可以通过它来
Articles.find_all(:include => :revisions,
:conditions => {:revision[updated_at] => 1.week.ago..Time.now.utc})
如果这是不可能的,是否有某种类型的原始SQL我可以通过它来查找能够实现这一目的的SQL?根据您对模型的命名方式,它将是这样的
Article.find(:all, :include => :revisions, :conditions => ["revisions.updated_at > ?", 1.week.ago])
如果您只需要这篇文章,而不需要急于加载所有修订,那么可以使用:joins。它使用更少的内存,因为它没有预加载每篇文章的所有修订。使用:如果你要做类似于
文章.修订版的事情,请包括在内
Article.find(:all,
:joins => :revisions,
:conditions => ["revisions.updated_at > ?", 24.hours.ago]
)
如果您希望查找所有文章以及24小时前更新的修订版,情况如何?(而不是减少文章的数量)。如果您想要文章和修订,我会使用:include而不是:joins