Ruby on rails Rails包括与左联接中的条件的关联

Ruby on rails Rails包括与左联接中的条件的关联,ruby-on-rails,associations,left-join,filtering,Ruby On Rails,Associations,Left Join,Filtering,我可以为Rails为includes方法生成的左连接sql添加一些条件吗?Rails 4.2.1,postresql 我需要得到一切!预加载的用户不是N+1,我将在视图中输入评论、帖子等的关联计数,但关联需要根据某些条件进行过滤 例如: 用户。包括:评论 =>从用户的左侧加入评论中选择*。。。 这将返回所有用户并预加载注释(如果存在)。 如果我将在where中为注释关联添加一些条件,那么SQL不会返回所有用户,例如: User.includes:comments.wherecomments:{p

我可以为Rails为includes方法生成的左连接sql添加一些条件吗?Rails 4.2.1,postresql

我需要得到一切!预加载的用户不是N+1,我将在视图中输入评论、帖子等的关联计数,但关联需要根据某些条件进行过滤

例如:

用户。包括:评论 =>从用户的左侧加入评论中选择*。。。 这将返回所有用户并预加载注释(如果存在)。 如果我将在where中为注释关联添加一些条件,那么SQL不会返回所有用户,例如:

User.includes:comments.wherecomments:{published_at:Date.today} =>从用户的左侧加入评论中选择*。。。其中comments.published_at=。。。 这将只返回今天发布的有评论的用户

我需要将条件放在左连接中,并将预加载加载对象保存到内存中-简单的左连接与连接方法不会预加载关联

从用户的左侧加入评论中选择*。。。和comments.published_at=。。。 这些SQL将返回正确的我需要的所有用户,和他们的评论,在要求的日期发布,如果他们存在!但是我无法使用Rails includes方法生成它,“joins”不会预加载关联


你给我什么建议?谢谢

Rails在框架库中没有方法来执行您想要的操作。 不过,这可能行得通

class User < ActiveRecord::Base
  has_many :comments
  has_many :recent_comments, -> { where(published_at: Date.today) }, class_name: "Comment"
end
@users = User.preload(:recent_comments)