Ruby on rails Rails:通过迁移创建默认根用户?耙任务?

Ruby on rails Rails:通过迁移创建默认根用户?耙任务?,ruby-on-rails,rake,authlogic,migration,rails-authorization,Ruby On Rails,Rake,Authlogic,Migration,Rails Authorization,我正在测试我的应用程序,这真是太棒了!我意识到我没有办法创建我的根用户 我正在使用Authlogic和rails\u授权\u插件 是否可以通过某种方式将节添加到迁移文件中,以添加此用户并将其分配为root角色?或者我可以通过一个rake任务来完成这个任务吗 如有任何见解,将不胜感激 您可以设置一个rake任务来引导用户和任何其他种子数据。Heroku实际上允许您运行rake任务: 或者,您可以一次性在本地创建用户,并使用heroku db:push将数据库上载到heroku。此处的文档: 另外,

我正在测试我的应用程序,这真是太棒了!我意识到我没有办法创建我的根用户

我正在使用Authlogic和rails\u授权\u插件

是否可以通过某种方式将节添加到迁移文件中,以添加此用户并将其分配为root角色?或者我可以通过一个rake任务来完成这个任务吗


如有任何见解,将不胜感激

您可以设置一个rake任务来引导用户和任何其他种子数据。Heroku实际上允许您运行rake任务:

或者,您可以一次性在本地创建用户,并使用heroku db:push将数据库上载到heroku。此处的文档:


另外,我建议不要进行仅数据迁移。Rails内核中甚至有一个种子数据rake任务。请参阅和。

您当然可以通过迁移来完成,我认为这是向应用程序数据库添加必要种子数据的推荐方法。迁移只是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在保存记录时会执行所有密码加密的复杂操作,所以我不需要做任何特殊的事情。之后,只需调用user.has_角色“root”即可将用户分配为root。罗太棒了!这里有一个类似的问题: