Ruby on rails 已加载的筛选器具有多个关联

Ruby on rails 已加载的筛选器具有多个关联,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,假设我有以下两个类: class Group has_many :actions end class Action belongs_to :group belongs_to :user end 我希望检索所有组及其操作,即: Group.includes(:actions) 但是我想按当前用户的用户id过滤加载的操作,因此在迭代“操作”关联时,只返回用户的操作 我可以添加另一个关联,如下所示: has_many :current_user_actions, -> {whe

假设我有以下两个类:

class Group
  has_many :actions
end

class Action
  belongs_to :group
  belongs_to :user
end
我希望检索所有组及其操作,即:

Group.includes(:actions)
但是我想按当前用户的用户id过滤加载的操作,因此在迭代“操作”关联时,只返回用户的操作

我可以添加另一个关联,如下所示:

has_many :current_user_actions, -> {where(user_id: User.current_user.id)}, class_name: 'Action'
但是前面提到的组查询提供了一个视图,该视图迭代“actions”(而不是“current_user_actions”)关联,因此排除了该选项

下面建议的以下查询将起作用,除非where子句过滤掉没有操作的组:

Group.includes(:actions).where('actions.user_id = ?', User.current_user.id).references(:actions)

如果可以简单地编写User.current\u User.id,为什么要使用User.current\u User.id?current\u User是控制器操作,但我的代码在模型中。User.current\u User是我自己的方法。您不能更改视图吗?我希望视图不知道它显示的组是否经过筛选。是否尝试了
Group.includes(:actions)。其中('actions.User\u id=?',User.current\u User.id)。引用(:actions)