Как отобразить имя роли, связанное с пользователем, используя rolify gem? - PullRequest
0 голосов
/ 28 декабря 2018

У меня есть таблицы 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

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

Добавьте приведенный ниже метод в модель, чтобы получить роль пользователя

user.rb

def profile_name
 roles.collect(&:name).join(', ')
end

users_controller.rb

def index
 @users = User.includes(:roles)
end

Видите, вызывайте метод роли какuser.profile_name.

0 голосов
/ 28 декабря 2018

Нет пользователя 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
...