【发布时间】:2019-12-11 10:37:35
【问题描述】:
有一个下拉菜单显示销售代表列表,定义如下。
<%= f.select :sales_rep_id,
User.with_role(:sales_rep).order(:email).map { |u| [u.email, u.id] },
{ include_blank: true },
class: 'form-control' %>
sales_rep 用户还可能具有其他角色,例如开发人员。
我还需要隐藏具有开发者角色的销售代表用户。
类似
User.where.not(has_role?(:developer)).with_role :sales_rep
关于如何实现这一点的任何想法。
【问题讨论】:
-
您能描述一下用户和角色之间的关系吗?
with_role作用域生成的 SQL 是什么? -
关系是销售代表也可以是开发人员。我需要选择不是开发人员的销售代表。为 with_role 执行的查询如下 SELECT "users".* FROM "users" INNER JOIN "users_roles" ON "users_roles"."user_id" = "users"."id" INNER JOIN "roles" ON "roles" ."id" = "users_roles"."role_id" WHERE (((roles.name = 'sales_rep') AND (roles.resource_type IS NULL) AND (roles.resource_id IS NULL))))
标签: ruby-on-rails ruby-on-rails-4 rolify