rake db:migrate不会创建数据

时间:2013-01-30 04:06:10

标签: ruby-on-rails ruby-on-rails-3

我正在尝试使用迁移添加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时,它运行正常,但未创建用户。

知道它为什么不创建用户,或者我如何进一步调试?

2 个答案:

答案 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