我正在尝试使用迁移添加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时,它运行正常,但未创建用户。
知道它为什么不创建用户,或者我如何进一步调试?
答案 0 :(得分:0)
替换
User.new(:email => "abc@abc.com", :name => "abc", :password => "abc", admin => true)
与
User.create!(:email => "abc@abc.com", :name => "abc", :password => "abc", admin => true)
如果未创建记录,create!将引发错误
答案 1 :(得分:0)
您是否有任何特殊原因要在迁移文件中执行此操作? 我认为将这种迁移放入种子文件将是一个更明智的解决方案。
穿戴 User.create!(:email =&gt;&#34; abc@abc.com",:name =&gt;&#34; abc&#34;,:password =&gt;&#34; abc&#34; ,admin =&gt; true)in seed.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