在Devise on Rails beta 3中创建管理员用户

ers*_*ner 44 ruby-on-rails devise

好吧,当有人用一个我想念的简单的东西回答这个问题时,我可能会感到非常愚蠢但是...这里有:

我在rails 3 beta上有一个全新的应用程序,我正在使用设计进行身份验证.我已经完成了所有评论,目前一切都很完美.我已经创建了一个用户角色和一个管理员角色(遵循这些说明:https://github.com/plataformatec/devise/wiki/How-To : -Add- an-Admin- Role)我已将自己注册为第一个用户,但如何注册或创建管理员角色用户?来自设计人员的指示设置管理员角色不可注册但我不确定如果你不能注册你应该如何创建管理员?!

任何帮助,将不胜感激!谢谢!

ers*_*ner 92

对.我感到愚蠢.

如果其他人有类似的无聊时刻.只需使用rails控制台创建管理员用户:

? rails c
Loading development environment (Rails 3.0.0.beta3)
irb(main):001:0> admin = Admin.create! do |u|
irb(main):002:1* u.email = 'sample@sample.com'
irb(main):003:1> u.password = 'password'
irb(main):004:1> u.password_confirmation = 'password'
irb(main):005:1> end
Run Code Online (Sandbox Code Playgroud)

那样做.现在只需访问您的管理员登录路径并登录即可.

  • 投票结果并不是指你答案的第一句话. (23认同)
  • 实际上,使用rails控制台实际管理了多少rails网站?你知道吗,那些小事,这里和那里的旗帜? (3认同)

pan*_*kka 13

你真正想要做的是创建种子数据.更标准的方法是将种子用户(和角色,如果要存储它们)添加到db/seeds.rb

对于db/seeds.rb中的例子:

roles = Role.create([{name: 'super_admin'}, {name: 'staff'}, {name:'customer'}])
users = User.create([{email: 'super@test.com', first_name: 'super', last_name: 'admin', password: '@dmin123', password_confirmation: '@dmin123', role: roles[0]}])
Run Code Online (Sandbox Code Playgroud)

然后运行:

rake db:seed
Run Code Online (Sandbox Code Playgroud)


小智 5

这可能不适用于Devise(但我相信它会),但一般来说,如果你想为管理员用户播种但不想将你的管理员密码存储在源代码管理中,你可以这样做......

@user = User.find_by_email("admin@email.com")

unless @user
  # We are going to bypass both our assignment protection and validation
  # so we aren't storing the password in source control.
  #
  # This doesn't replace the need to change the password occasionaly, both
  # on the site and in source control.
  @user = User.create do |u|
    u.name = "Admin User"
    u.email = "admin@email.com"
    u.password_digest = "$2a$10$DUv/IUiLB34jhi3j4Z8MwwcaDlBmFe3rvcdXSzPKLzBOAMmD53UqW"
  end

  @user.save(:validate => false)

  # TODO make the user an admin
end
Run Code Online (Sandbox Code Playgroud)

您可以使用要查找password_digest的密码在本地创建用户.