Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails ActiveRecord:是否可以组合:include和:conditions查询?_Ruby On Rails_Activerecord_Include_Conditional Statements_Findall - Fatal编程技术网

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

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我可以通过它来

想象一下,我有很多修改过的wiki文章。我想通过数据库对ActiveRecord进行查询,它只返回那些在过去24小时内更新过的文章。这可能吗

我想象它会是这样的:

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