我正在尝试使用 Devise 和 Cancan 在我的 Rails 应用程序中创建权限。
能力.rb:
class Ability
include CanCan::Ability
def initialize(user)
if user.role == 'admin'
can :manage, :all
else
can :read, :all
end
end
end
用户.rb
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me, :role
# attr_accessible :title, :body
def role(role)
roles.include? role.to_s
end
end
看法
<% if can? :update, review %>
<p><p><i><a href = '/products/<%= @product.id %>/reviews/<%= review.id %>/edit'>Edit</a>
<% end %>
我收到一条错误消息,显示视图中此行的 nil:NilClass 的未定义方法“角色”。关于如何解决这个问题的任何建议?
我一直在尝试使用https://github.com/ryanb/cancan/wiki/Role-Based-Authorization作为指南