不执行Rails迁移

时间:2014-07-30 11:12:39

标签: ruby-on-rails devise migration

使用devise gem创建用户表后,我想在单独的迁移文件中再添加一个属性:

class AddAutoLoginTokenToUsersTable < ActiveRecord::Migration

  def up
    add_column :users, :auto_login_token, :string
  end

  def down
    remove_column :users, :auto_login_token
  end

end

运行rake db:migrate会给出以下确认:

== 20140421141615 AddAutoLoginTokenToUsersTable: migrating ====================
-- add_column(:users, :auto_login_token, :string)
   -> 0.0020s
== 20140421141615 AddAutoLoginTokenToUsersTable: migrated (0.0021s) ===========

但是使用Rails控制台或在服务器上执行会出现以下错误:

undefined method `auto_login_token' for #<User:0x00000103228b80>

你知道为什么会这样,以及如何解决这个问题?感谢

1 个答案:

答案 0 :(得分:1)

根据您使用的宝石,您可能需要重新启动控制台才能获取User模型的更改。

如果失败,请检查您是否在运行控制台的同一环境中运行了迁移。您可能已在开发环境中运行迁移并使控制台在生产环境中运行。有关如何在不同环境中运行迁移的信息,请参阅here

rake db:migrate RAILS_ENV=test