在Devise on Rails beta 3中创build一个pipe理员用户

好吧,我可能会觉得很愚蠢,当有人回答这个简单的事情,我失踪,但是… …在这里:

我有一个全新的轨道3testing版的应用程序,我正在使用devise进行身份validation。 我已经运行了所有的评论,现在一切正常。 我已经创build了一个用户angular色和一个pipe理员angular色(按照这些说明: https : //github.com/plataformatec/devise/wiki/How-To : -Add- an-Admin- Role ),我已经注册了自己第一个用户,但如何注册或创build一个pipe理angular色的用户? 从devise人员的方向设置pipe理员angular色不能注册,但我不确定你应该如何创buildpipe理员,如果你不能注册?!

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

对。 我觉得哑巴。

如果有其他人也有类似的时刻。 只需使用rails控制台来创buildpipe理员用户:

➡ 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 

这将做到这一点。 现在只需访问您的pipe理员loginpath并login。

你真正想要做的是创build种子数据。 一个更标准的方法是将你的种子用户(和angular色,如果你正在存储它们)添加到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]}]) 

然后运行:

 rake db:seed 

这可能不适用于devise(但我相信它会),但一般来说,如果你想播种一个pipe理员用户,但不想将您的pipe理员密码存储在源代码pipe理,你可以做这样的事情…

 @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 

您可以使用您想要查找password_digest的密码在本地创build用户。

@斯图尔特你是对的。 在用户模型中使用pipe理标志是可以接受的,并且仍然可以与许多授权选项共存。 看一下Cancan文档中的Ability类,看下面的例子:

 def initialize(user) if user.admin? can :manage, :all else can :read, :all end end 

如果function确实不同,或者授权要求(例如将子域添加到authkeys)不同,则拥有多个授权模型可能会有用。

另一种方法是将HABTMangular色关系添加到您的用户。 下面是Tony Amoyal的一个很好的教程: http : //www.tonyamoyal.com/2010/07/28/rails-authentication-with-devise-and-cancan-customizing-devise-controllers/

尝试追加/ sign_in到你的pipe理path,无论你设置为…我的是

http://yoursite.com/admin/sign_in?unauthenticated=true

有一种方便的方式来填充表 – db / seed.rb文件。 只需添加用于创build用户的脚本并运行:

 rake db:seed 

下面您可以看到带有emailusername段的User模型示例:

 # Inserting default security users users = { admin: { username: 'admin', email: 'admin@gmail.com', password: 'adminpass', password_confirmation: 'adminpass', is_admin: true }, administrator: { username: 'administrator', email: 'administrator@gmail.com', password: 'administrator', password_confirmation: 'administrator', is_admin: true } } users.each do |user, data| user = User.new(data) unless User.where(email: user.email).exists? user.save! end end 

请注意,该devisevalidation适用于此处。

在这里你可以find更多使用seed.rb文件的例子, 这里是rayn的rails转换。