gpt4 book ai didi

ruby-on-rails - # 的未定义方法 'admin?'

转载 作者:太空宇宙 更新时间:2023-11-03 18:12:44 25 4
gpt4 key购买 nike

我正在使用 gem 'devise''cancancan' 为每个用户定义许多角色。问题是当我运行 rails server 时它说 undefined method admin?

在 application_controller.rb 文件中:

  before_action :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:roles) }
end

在 user.rb 文件中:

  ROLES = %i[admin author]

def roles=(roles)
roles = [*roles].map { |r| r.to_sym }
self.roles_mask = (roles & ROLES).map { |r| 2**ROLES.index(r) }.inject(0, :+)
end

def roles
ROLES.reject do |r|
((roles_mask.to_i || 0) & 2**ROLES.index(r)).zero?
end
end

def has_role?(role)
roles.include?(role)
end

在 ability.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

有什么想法吗??

最佳答案

您的User 模型没有admin? 方法。相反,它提供了一个 has_role? 方法。因此,不要在 user.admin? 中写入 ability.rb:

user.has_role?(:admin)

另一种选择是将 admin? 方法添加到您的 User 模型:

def admin?
has_role?(:admin)
end

关于ruby-on-rails - #<User :0x007fccda8003c8> 的未定义方法 'admin?',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31371487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com