如何使用 rolify gem 显示与用户关联的角色名称?
How to display role name associated with user using rolify gem?
我有表 Roles、Users 和 Users_Roles。每个用户都有一个与之关联的角色。如何在视图中显示与用户关联的角色名称。
index.html:
<% @users.each do |user| %>
<tr>
<td><%= user.full_name %></td>
<td><%= user.email %></td>
<td class="text-center"><%= user.profile_name %></td>
<td class="text-center"><%= user.client_list %></td></tr><% end %>
user.rb:
def profile_name
Role.find(role_id).name
end
用户中没有role_id
。这是一个 "has and belongs to many" 关联,因此用户可以拥有 0 个、1 个或多个角色,这就是 Rolify 的工作方式。
如果您确定用户只会拥有一个角色,您可以这样做
def profile_name
roles.first.name
end
如果您不允许任何角色,那么
def profile_name
roles.first.try(&:name) || 'No role'
end
如果允许多个角色,这可以做到
def profile_name
roles.map(&:name).join(', ')
end
在模型中添加以下方法以获取用户角色
user.rb
def profile_name
roles.collect(&:name).join(', ')
end
users_controller.rb
def index
@users = User.includes(:roles)
end
在视图中,调用角色方法为user.profile_name。
我有表 Roles、Users 和 Users_Roles。每个用户都有一个与之关联的角色。如何在视图中显示与用户关联的角色名称。
index.html:
<% @users.each do |user| %>
<tr>
<td><%= user.full_name %></td>
<td><%= user.email %></td>
<td class="text-center"><%= user.profile_name %></td>
<td class="text-center"><%= user.client_list %></td></tr><% end %>
user.rb:
def profile_name
Role.find(role_id).name
end
用户中没有role_id
。这是一个 "has and belongs to many" 关联,因此用户可以拥有 0 个、1 个或多个角色,这就是 Rolify 的工作方式。
如果您确定用户只会拥有一个角色,您可以这样做
def profile_name
roles.first.name
end
如果您不允许任何角色,那么
def profile_name
roles.first.try(&:name) || 'No role'
end
如果允许多个角色,这可以做到
def profile_name
roles.map(&:name).join(', ')
end
在模型中添加以下方法以获取用户角色
user.rb
def profile_name
roles.collect(&:name).join(', ')
end
users_controller.rb
def index
@users = User.includes(:roles)
end
在视图中,调用角色方法为user.profile_name。