gpt4 book ai didi

ruby-on-rails - 如何让管理员用户使用 devise 和 cancan?

转载 作者:行者123 更新时间:2023-12-03 16:19:41 25 4
gpt4 key购买 nike

我设置了 devise 和 cancan,但是我现在如何让 1 个用户成为 admin 而另一个用户不是 admin?
我是使用 omniauth(我只想用 google 登录)、devise 还是 cancan?

最佳答案

要在 CanCan 中使用此特定功能,您需要在设备上存储一个属性 User指示特定用户是否为管理员的模型。

首先在您的 User 上创建一个属性表名为 admin :

# from command line
rails generate migration AddAdminToUser user

在迁移中,为 admin 设置默认值归因于 false (或 true ,取决于您希望默认执行的行为):
class AddAdminToUser < ActiveRecord::Migration
def change
add_column :users, :admin, :boolean, :default => true

end
end

运行迁移
# from command line
rake db:migrate

在您的 User模型,创建一个方便的方法来访问 admin 的值:
# app/models/user.rb    
def admin?
admin
end

然后,在 ability.rb , 定义您要为每个用户设置的能力:
class Ability
include CanCan::Ability

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

请记住——默认情况下,一个新的 User不是管理员。您始终可以通过以下方式对现有用户启用管理员权限:
# from the Rails console
user = User.find(some_number)
user.update_attribute(:admin, true)

关于ruby-on-rails - 如何让管理员用户使用 devise 和 cancan?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18876426/

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