Ruby on rails CANCAN未定义的方法`用户类型?';至于;“管理员”:一串
我的问题是: 我用的是坎坎宝石。我认为所有设置都很好,除了一件事,那就是为“admin”生成Ruby on rails CANCAN未定义的方法`用户类型?';至于;“管理员”:一串,ruby-on-rails,authorization,gem,cancan,Ruby On Rails,Authorization,Gem,Cancan,我的问题是: 我用的是坎坎宝石。我认为所有设置都很好,除了一件事,那就是为“admin”生成未定义的方法'user\u type':String 这是我的能力 class Ability include CanCan::Ability def initialize(user) user ||= User.new # guest user if user.user_type? :admin can :manage, :all #
未定义的方法'user\u type':String
这是我的能力
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user
if user.user_type? :admin
can :manage, :all
# [code code code code commented to find more easily the problem]
else
can :read, :all
end
end
end
我的用户.rb
require 'digest/sha2'
class User < ActiveRecord::Base
#definisco i ruoli
ROLES = %w[admin client banned]
default_scope :order => 'user' [...]
需要“摘要/sha2”
类用户user'[…]
我不知道我要修改什么。为什么如果user.user\u类型管理员
是否不检查当前用户属性?非常感谢您的关注
UP:好的,我阅读了有关cancan需要在应用程序控制器中声明的方法“current_user”。现在我在做。新闻,很快。你应该这样做。我认为这是更好的方法 将角色种子植入数据库 并在应用程序助手中粘贴此代码
def is_admin?(user)
admin_role = Role.find(:first, :conditions => ["name = ?", "admin"])
return user.roles.include?(admin_role)
end
然后在能力上打个电话
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user
if is_admin?(user)
can :manage, :all
# [code code code code commented to find more easily the problem]
else
can :read, :all
end
end
end
它会很好的……你应该这样做。我认为这是更好的方法 将角色种子植入数据库 并在应用程序助手中粘贴此代码
def is_admin?(user)
admin_role = Role.find(:first, :conditions => ["name = ?", "admin"])
return user.roles.include?(admin_role)
end
然后在能力上打个电话
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user
if is_admin?(user)
can :manage, :all
# [code code code code commented to find more easily the problem]
else
can :read, :all
end
end
end
它将很好地工作……您在哪里定义了用户类型?方法?你在哪里检查授权?什么控制器?(如果是控制器)请也粘贴该代码。这是因为在某种程度上,传递给
CanCan
的user
变量是一个值为“admin”
的字符串-您希望用户实际上是用户
实例。已解决!!!如果user.user\u type==“admin”在应用程序控制器中,我将添加def current\u user@current\u user=user到ability.rb中。按用户id查找用户(会话[:用户id])结束谢谢!您在哪里定义了用户类型?方法?你在哪里检查授权?什么控制器?(如果是控制器)请也粘贴该代码。这是因为在某种程度上,传递给CanCan
的user
变量是一个值为“admin”
的字符串-您希望用户实际上是用户
实例。已解决!!!如果user.user\u type==“admin”在应用程序控制器中,我将添加def current\u user@current\u user=user到ability.rb中。按用户id查找用户(会话[:用户id])结束谢谢!