Rails 3 ActiveRecord条件包括?

sam*_*tte 14 activerecord ruby-on-rails ruby-on-rails-3

我知道这可以做到:

Article.where("published_at <= ?", Time.now).includes(:comments)
Run Code Online (Sandbox Code Playgroud)

但是,如果我只想在过去一个月发布评论怎么办?

.includes运算符是否允许条件?

Reu*_*aby 12

Article.includes(:comments).where("articles.published_at <= ? and comments.created_at >= ?", Time.now, Time.now - 1.month)
Run Code Online (Sandbox Code Playgroud)

编辑:

Article.joins(:comments).where("articles.published_at <= ? and comments.created_at >= ?", Time.now, Time.now - 1.month)
Run Code Online (Sandbox Code Playgroud)

  • 实际上,此查询仅返回*具有过去一个月发布的评论的文章.我需要回复所有*文章,以及过去一个月发布的每篇文章的评论(如果有的话). (8认同)
  • `joins`做内连接.同样的问题.`includes`执行左外连接,这是我们想要的,但是所需的过滤器应用于where子句而不是连接. (8认同)