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])
- Rails模型中的class_name foreign_key
- 使用rails嵌套模型来创建*外部对象并同时*编辑*现有的嵌套对象?
- Rails 4.2.0中的简单整数赋值的RangeError应该通过validation捕获
- Rails 4生成无效的列名称
- ActiveRecord:定义关联时,将类而不是字符串传递给class_name
- Rails里面有LIKE和数组
- Ruby on Rails ActiveRecord“has_many:through”唯一性validation
- ConnectionNotEstablished之后在JRuby中有一个multithreading环境
- Rails first_or_create中的竞争条件