Rails:通过迁移创建默认root用户?耙任务?

时间:2009-10-13 20:00:08

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

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

我正在使用Authlogic和rails_authorization_plugin。

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

任何见解都将受到赞赏!

2 个答案:

答案 0 :(得分: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,所以我不确切知道它的用户模型是如何工作的,但是你应该能够从这里弄明白。

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

答案 1 :(得分: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