我有角色,用户和用户_角色表。每个用户将具有与之关联的角色。如何在视图中显示与用户关联的角色名称。
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
答案 0 :(得分:2)
在模型中添加以下方法以获得用户角色
user.rb
def profile_name
roles.collect(&:name).join(', ')
end
users_controller.rb
def index
@users = User.includes(:roles)
end
在视图中,将角色方法称为user.profile_name。
答案 1 :(得分:1)
用户中没有role_id
。这是一个“拥有并属于许多人”的关联,因此用户可以拥有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