Rails最近一次关联超过1个月的范围

时间:2015-07-25 23:47:23

标签: ruby-on-rails postgresql

我的应用中有两个模型,一个名为Feed,另一个名为Post。饲料有很多帖子。

我正在寻找一种方法来返回最近发布的帖子超过1个月的Feed。

我有一些简单的事情:

class Feed < ActiveRecord::Base
  has_many :posts

  scope :no_recent_posts, -> { includes(:posts).where('posts.created_at > ?', 1.month.ago) }
end

但当然,如果他们有旧帖子,这也会返回任何Feed(即使他们也有更新的帖子。

也许有limit(1)和order

1 个答案:

答案 0 :(得分:2)

您可以使用GROUP BY...HAVING来实现此目的。

scope :no_recent_posts, { joins(:posts).group(:feed_id).having('max(posts.created_at) > ?', 1.month.ago)

由于您不需要急切加载帖子(根据您的要求),因此我将includes更改为joins