【问题标题】:How to display role name associated with user using rolify gem?如何使用 rolify gem 显示与用户关联的角色名称?
【发布时间】:2018-12-28 09:39:45
【问题描述】:

我有表 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

【问题讨论】:

    标签: ruby-on-rails devise rolify


    【解决方案1】:

    在模型中添加以下方法以获取用户角色

    用户.rb

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

    users_controller.rb

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

    在视图中,调用角色方法为user.profile_name。

    【讨论】:

      【解决方案2】:

      用户中没有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
      

      【讨论】:

        猜你喜欢
        • 2021-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-08
        • 1970-01-01
        • 2015-08-01
        • 2015-09-01
        • 2021-04-06
        相关资源
        最近更新 更多