如何使用Devise Gem在Ruby On Rails中创建管理员?

时间:2012-10-08 18:46:08

标签: ruby-on-rails-3.1 devise rubygems

我正在开发一个rails应用程序,并使用一个名为devise的gem来管理我的用户。我创建了一个名为“Admin”的新用户,但不确定如何将应用程序上的用户从“用户”更改为“管理员”。

在文档上说: “下面的代码可用于向当前用户授予管理员状态。”

current_user.update_attribute :admin, true

但这个片段在哪里? 这是文档,管理角色创建信息位于页面底部附近。 https://github.com/plataformatec/devise/wiki/How-To%3A-Add-an-Admin-Role

2 个答案:

答案 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”。