我的应用中有两个模型,一个名为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
?
答案 0 :(得分:2)
您可以使用GROUP BY...HAVING
来实现此目的。
scope :no_recent_posts, { joins(:posts).group(:feed_id).having('max(posts.created_at) > ?', 1.month.ago)
由于您不需要急切加载帖子(根据您的要求),因此我将includes
更改为joins
。