【问题标题】:how to manage CanCan如何管理 CanCan
【发布时间】:2013-04-29 03:05:44
【问题描述】:

这是我的能力.rb

class Ability

 include CanCan::Ability

  def initialize(user)
  user ||= User.new # guest user (not logged in)
  if user.admin?
    can :manage, :all
  else
    can :read, :all
  end
  end
  end

和索引

  <% if can? :update, @post %>
      <%= link_to t('.edit', :default => t("helpers.links.edit")),
                  edit_post_path(post), :class => 'btn btn-mini' %>
      <% end %> 

但我收到错误

“帖子中的 NoMethodError #index 未定义方法 `admin?'为#"

我应该在哪里定义管理员或其他角色?登录时如何选择管理员或其他角色?

【问题讨论】:

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


    【解决方案1】:

    你必须在用户模型中创建管理方法

    def admin?
      type == 'Admin'
    end
    

    如果您有 Admin 模型:

    class Admin < User
    end
    

    【讨论】:

    • 你要给users加一个type列,google单表继承,会让你一目了然。
    • 我有任何管理模型,但现在创建并在用户中定义管理方法。现在我收到“#<0x007f76dc828d90>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多