Sql rails activerecord作用域联接查询获取不';不存在于联接表中

Sql rails activerecord作用域联接查询获取不';不存在于联接表中,sql,ruby-on-rails,activerecord,Sql,Ruby On Rails,Activerecord,我有一个activerecord范围查询: 作用域:可管理的用户,->{joins(:roles).where.not(roles:{role\u name:'admin'})} 我希望可管理的\u users返回所有非管理员的用户。但是,有些用户在角色表中没有条目(即他们不是管理员,但也没有任何其他特殊角色),我如何让查询也返回这些用户 默认情况下,rails中的联接执行内部联接 对于您想要获取用户的用例,即使他们在角色中没有关联的值,也可以使用leftouterjoin User.joins

我有一个activerecord范围查询:

作用域:可管理的用户,->{joins(:roles).where.not(roles:{role\u name:'admin'})}


我希望
可管理的\u users
返回所有非管理员的用户。但是,有些用户在
角色
表中没有条目(即他们不是管理员,但也没有任何其他特殊角色),我如何让查询也返回这些用户

默认情况下,rails中的联接执行内部联接

对于您想要获取用户的用例,即使他们在角色中没有关联的值,也可以使用leftouterjoin

User.joins("LEFT OUTER JOIN roles on roles.user_id = users.id")
在Rails 5中,您可以执行以下操作:

User.left_outer_joins(:roles)