0

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

我正在使用 Authlogic 和 rails_authorization_plugin。

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

任何见解将不胜感激!

4

2 回答 2

5

您当然可以通过迁移来做到这一点,我认为这是将必要的种子数据添加到应用程序数据库的推荐方法。迁移只是 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,所以我不知道它的用户模型是如何工作的,但你应该能够从这里弄清楚。

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

于 2009-10-13T20:38:23.400 回答
2

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

或者,一次性地,您可以在本地创建用户并使用heroku db:push. 此处的文档:http: //docs.heroku.com/taps#import-push-to-heroku

另外,我建议反对仅数据迁移。在 Rails 核心中甚至还有一个种子数据 rake 任务。请参阅railscast这篇文章

于 2009-10-13T20:30:10.513 回答