Rolify中的范围用于过滤掉具有特定角色的用户(Rails 4)

时间:2015-12-22 16:51:17

标签: ruby-on-rails-4 scope rolify

我太陌生了,无法解决这个问题。 我有一个页面上所有用户的列表,我希望能够根据角色过滤掉列表(使用顶部的复选框或链接)。 我可以让它与表中的另一列(例如位置)一起工作,但我无法弄清楚如何使用角色。

在我的模型中,我有这个使其适用于位置:

scope :location, -> (location) { where("location LIKE ?", "#{location}%") }

然后在我的控制器中我有

@users = User.location(params[:location]) if params[:location].present?

然后在我的索引中导致这个

<% @users.each do |user| %>
   <%= link_to "filter by #{user.location}", "https://example.com/users?location=" + user.location %>
<% end %>

当然,只使用&#34;角色&#34;由于Rolify不会将角色和用户保留在同一个表格中,所以无法工作。

我已尝试在我的模型中使用它

scope :role, ->(role) { Role.find_by(name: role.to_s).users }

然后我无法弄清楚如何让它在我的控制器和索引页面中运行。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

Rolify有一个帮助方法,可以查找具有角色的用户:

User.with_any_role('your_role_here')

以上将返回一个包含具有指定角色的所有用户的数组