我正在尝试使用迁移添加 Devise 管理员用户。我尝试使用 --trace 运行以下内容,但没有看到任何问题。 我的迁移文件是:
class InsertAdminUser < ActiveRecord::Migration
def up
User.new(:email => "abc@abc.com", :name => "abc", :password => "abc", admin => true)
end
def down
User.delete_all(:email => "abc@abc.com")
end
end
当我运行 db:migrate 时,它运行良好,但未创建用户。
知道为什么它没有创建用户,或者我如何进一步调试?
替换
User.new(:email => "abc@abc.com", :name => "abc", :password => "abc", admin => true)
跟
User.create!(:email => "abc@abc.com", :name => "abc", :password => "abc", admin => true)
如果未创建记录,则创建! 将引发错误
您想在迁移文件中执行此操作有什么特殊原因吗?我认为将这种迁移放入种子文件中将是一个更明智的解决方案。
放用户创建!(:email => "abc@abc.com", :name => "abc", :p assword => "abc", admin => true) inseed.rb 并运行 rake db:seed
您还可以创建自定义种子文件,例如,创建 seed_admin.rb 并放置
User.create!(:email => "abc@abc.com", :name => "abc", :password => "abc", admin => true)
创建 delete_admin.rb 并放置
User.delete_all(:email => "abc@abc.com")
然后你可以运行
rake db:seed:seed_admin and rake db:seed:delete_admin
如果你把你的代码放在github上,不要忘记把这些敏感文件放在.gitingore中。