【问题标题】:Issues with Cancan and rails_admin with deviseCancan 和 rails_admin 的设计问题
【发布时间】:2012-12-01 08:28:02
【问题描述】:

所以我设置了带有 devise 和 cancan 的 rails_admin,这样只有管理员才能访问 /admin 页面。

但是当尝试使用<% if user_admin? %> 仅向管理员显示某些代码时,我得到undefined methoduser_admin?对于`

ability.rb

职业能力 包括 CanCan::Ability

  def initialize(user)
      user ||= User.new # guest user (not logged in)
      if user.admin?
        can :manage, :all
        can :access, :rails_admin #grant access to rails_admin
        can :dashboard #gives access to the dashboard

      else
        can :read, :all
      end
  end
end

_header.html.erb

 <% if user_admin? %>
 <li><%= link_to 'Settings', edit_user_registration_path %></li>
 <li><%= link_to 'Logout', destroy_user_session_path, method: :delete %></li>
 <% else %>
 <li><%= link_to "Create Account", new_user_registration_path %></li>
 <li><%= link_to "Login", new_user_session_path %></li>
 <% end %>

【问题讨论】:

  • 更多代码会有所帮助。用户管理员?方法和显示方法。你检查过github.com/ryanb/cancan 了吗?问候
  • 我想我还没有完成所有设置,我想是因为如果 user.admin?在ability.rb 文件中工作,然后我可以在应用程序的其他部分使用该行来定义 if user_admin?

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2


【解决方案1】:

我需要在ability.rb中设置能力

class Ability
  include CanCan::Ability

  def initialize(user)
      user ||= User.new # guest user (not logged in)
      if user.admin?
        can :manage, :all
        can :access, :rails_admin #grant access to rails_admin
        can :dashboard #gives access to the dashboard

      else
        can :read, :all
      end
  end
end

然后就可以打电话了

  <% if can? :access, :rails_admin %>
  <li><%= link_to 'Admin', rails_admin_path %></li>
  <% end %>

如果可以,我现在可以吗?我想授权的任何事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多