【问题标题】:Rails: Create Default root user through migration? Rake task?Rails:通过迁移创建默认 root 用户?耙任务?
【发布时间】:2009-10-13 20:00:07
【问题描述】:

我正在Heroku 上测试我的应用程序(这太棒了!),我意识到我无法创建我的root 用户。

我正在使用 Authlogic 和 rails_authorization_plugin。

我是否可以在我的一个迁移文件中添加一个部分来添加该用户并为其分配root 的角色?或者我可以通过 rake 任务来做到这一点吗?

任何见解将不胜感激!

【问题讨论】:

标签: ruby-on-rails rake authlogic migration rails-authorization


【解决方案1】:

您当然可以通过迁移来做到这一点,我认为这是将必要的种子数据添加到应用程序数据库的推荐方法。迁移只是 ruby​​ 代码,因此非常简单。你可以使用所有你习惯的 ActiveRecord 东西并执行以下操作:

class AddRootUser < ActiveRecord::Migration
  def self.up
    user = User.create!( :email => '...', :login => 'root', :password => '...' )
  end

  def self.down
    user = User.find_by_login( 'root' )
    user.destroy
  end
end

我遗漏了您可能想做的事情,例如挽救创建用户失败等。另外,我没有使用 AuthLogic,所以我不知道它的用户模型是如何工作的,但是您应该可以从这里弄清楚。

另一种常见的模式是让向下迁移完全清除表,并让向上迁移在运行之前调用向下迁移。不过,在这种情况下,这可能不是您想要的。

【讨论】:

  • 太棒了,谢谢!事实证明,Authlogic 在保存记录时会执行所有“加密密码”mumbo-jumbo,所以我不需要做任何特别的事情。之后,只需调用 user.has_role 'root' 即可将用户分配为 root。 RoR 很棒!
【解决方案2】:

您可以设置一个 rake 任务来引导用户(以及任何其他种子数据)。 Heroku 实际上可以让你运行 rake 任务:http://docs.heroku.com/rake

或者,一次性地,您可以在本地创建用户并使用heroku db:push 将您的数据库上传到heroku。文档在这里:http://docs.heroku.com/taps#import-push-to-heroku

另外,我建议不要只迁移数据。在 Rails 核心中甚至还有一个种子数据 rake 任务。请参阅the railscastthis post

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    • 1970-01-01
    相关资源
    最近更新 更多