我正在开发一个rails应用程序,并使用一个名为devise的gem来管理我的用户。我创建了一个名为“Admin”的新用户,但不确定如何将应用程序上的用户从“用户”更改为“管理员”。
在文档上说: “下面的代码可用于向当前用户授予管理员状态。”
current_user.update_attribute :admin, true
但这个片段在哪里? 这是文档,管理角色创建信息位于页面底部附近。 https://github.com/plataformatec/devise/wiki/How-To%3A-Add-an-Admin-Role
答案 0 :(得分:2)
你非常接近解决方案!没有什么比阅读文档更好的了: - )
通过使用wikipage中提到的选项2,您的应用程序中的用户将被分类 作为'定期'或者' admin',基于admin属性。 wikipage为您提供了向当前用户授予管理员角色的代码,并决定在何处调用此代码。
很公平,因为用户成为管理员的方式特定于每个应用程序,具体取决于用户希望如何完成。
实现这一目标的一种方法是拥有“授予当前用户管理权限”和“#39; GUI中的动作将调用代码。在这种情况下,代码将在'grant_current_user_admin_rights' ' users_controller.rb'中的方法文件。当然,也应该相应地修改视图和路线。
您可以在用户模型的after_create
回调中调用该代码,确保所有用户都成为管理员: - )
另一种方法是在控制台或数据库种子中为特定用户设置admin标志。
我的一个项目的种子文件示例:
admin_user = User.new( :email => USER_EMAIL, :password => PASSWORD_STRING, :name => USER_NAME )
admin_user.admin = true
admin_user.save!
希望这有帮助。
答案 1 :(得分:2)
晚了4年但OP问题的真正答案是,当他问到放在哪里时:
current_user.update_attribute:admin,true
可以通过转到终端/命令提示符来解决。
输入
rails c
访问rails终端。
然后转到您的用户,因为您可能是第一个:
user = User.find(1)
user.update_attribute(:admin,true)
假设您已按照文档选项2中的所有上述步骤操作,这将使您的用户拥有真正的Admin属性。
您可以通过
验证这一点User.find(1) 它应该在大块文本的末尾说“admin:true”。