我希望能够选择具有多个角色的用户:
User < ActiveRecord::Base
has_and_belongs_to_many :roles
end
Role < ActiveRecord::Base
has_and_belongs_to_many :users
end
我知道如何选择具有两个角色之一的用户:
User.joins(:roles).where(roles: { name: [:admin, :manager] })
但是我如何找到至少具有 :admin 和 :manager 角色的所有用户?
最佳答案
这会起作用:
users = User.joins(:roles)
users.where("roles.name" => "admin") & users.where("roles.name" => "manager")
请注意,这会产生两个 SQL 加载查询,我认为这对于此类搜索来说可能是不可避免的。 (您的替代解决方案还会进行两个 SQL 查询。)另请注意,它返回一个数组而不是 activerecord 关系,这可能不是您想要的。
关于ruby-on-rails - 如何选择对同一关联有两个约束的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12361112/