Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在Desive on Rails beta 3中创建管理员用户_Ruby On Rails_Devise - Fatal编程技术网

Ruby on rails 在Desive on Rails beta 3中创建管理员用户

Ruby on rails 在Desive on Rails beta 3中创建管理员用户,ruby-on-rails,devise,Ruby On Rails,Devise,好吧,当有人回答这个问题时,我可能会觉得很傻,因为我错过了一件简单的事情,但是。。。下面是: 我在rails 3测试版上有一个全新的应用程序,我正在使用Desive进行身份验证。我已经运行了所有的评论,现在一切都很好。我已经创建了一个用户角色和一个管理员角色(按照以下说明:),并且我已经将自己注册为第一个用户,但是如何注册或创建一个管理员角色用户?Desive的指导将管理员角色设置为不可注册,但我不确定如果无法注册,您应该如何创建管理员 任何帮助都将不胜感激!谢谢 尝试在您的管理路径中添加/登录

好吧,当有人回答这个问题时,我可能会觉得很傻,因为我错过了一件简单的事情,但是。。。下面是:

我在rails 3测试版上有一个全新的应用程序,我正在使用Desive进行身份验证。我已经运行了所有的评论,现在一切都很好。我已经创建了一个用户角色和一个管理员角色(按照以下说明:),并且我已经将自己注册为第一个用户,但是如何注册或创建一个管理员角色用户?Desive的指导将管理员角色设置为不可注册,但我不确定如果无法注册,您应该如何创建管理员


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

尝试在您的管理路径中添加/登录,无论您将其设置为什么…我的都是

是的。我觉得自己很笨

如果其他人也有类似的无聊时刻。只需使用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

那就行了。现在只需访问您的管理员登录路径并登录。

@Stewart您是对的。在用户模型中使用admin标志是可以接受的,并且仍然可以与许多授权选项共存。查看cancan文档中的能力类,以了解其可能的示例:

def initialize(user)
  if user.admin?
    can :manage, :all
  else
    can :read, :all
  end
end
如果功能确实不同,或者如果授权要求(例如向AuthKey添加子域)不同,那么拥有多个授权模型可能会很有用

另一种方法是向用户添加HABTM角色关系。下面是Tony Amoyal的一篇精彩教程:

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

@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

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

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

对于db/seeds.rb中的exmaple:

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

有一种方便的方法可以填充表-文件。只需添加用于在其中创建用户的脚本,然后运行:

rake db:seed
下面,您可以看到带有
email
username
字段的
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
请注意,此处应用了Desive验证


您可以找到更多使用
seed.rb
文件的示例,这是rayn's rails的演员阵容。

oops您可能没有使用:Authenticatable。尝试此页面以获取覆盖管理视图的帮助:不,我在使用Desive设置管理模型时没有使用:authenticatable,正如我所说,我使用的是divise在其github页面上提供的教程。如果我能帮上忙的话,我宁愿不使用子域…投票不是指你答案的第一句话。实际上,有多少rails站点是使用rails控制台管理的?你知道,这些小事情,这里和那里的一个标志字段?可能有一个可怕的数量是通过控制台管理的。我知道我一直在用它。但是我想我们应该感谢@dhh为我们创建了一个访问Rails应用程序的好方法。对于最新的Desive和ActiveAdmin,请使用AdminUser.create!而不是Admin.create!谢谢你的回答!Desive是否使用md5来解析密码?这是正确的方法。