我有以下关系:
Category has_many :posts
Post has_many :comments
Post has_many :commenters, :through => :comments
我有以下急切的负载,给了我帖子、评论和评论者(请注意,我需要全部 3 个,因此包含而不是加入)
category.posts.includes(:comments, :commenters)
但是,我想将评论(如果可能的话,评论者)限制为仅在过去两周内创建的评论,同时仍返回相同的帖子集。最初我以为我可以在包含项上指定一个条件:
category.posts.includes(:comments, :commenters).where("comments.created_at > ?", 2.weeks.ago)
但是发现这只会返回满足条件的帖子。我在想我可能需要做一些事情,比如对评论执行子查询,然后执行连接。有没有一种简单的方法可以用 AR 来做到这一点,我最好用 sql 来做这件事吗?