Migration 仅在rails 3项目中的迁移中存在Authlogic问题

Migration 仅在rails 3项目中的迁移中存在Authlogic问题,migration,ruby-on-rails-3,authlogic,Migration,Ruby On Rails 3,Authlogic,我正在尝试运行以下迁移 def self.up add_column :users, :perishable_token, :string User.all.each { |u| u.reset_perishable_token! } change_column :users, :perishable_token, :string, :null => false add_index :users, :perishable_token end 还有u.re

我正在尝试运行以下迁移

def self.up
    add_column :users, :perishable_token, :string
    User.all.each { |u| u.reset_perishable_token! }
    change_column :users, :perishable_token, :string, :null => false

    add_index :users, :perishable_token
end
还有
u.reset\u易腐\u代币代码行为异常(没有返回值,不会更改数据库字段)。因此,
change\u列…,:null=>false
失败

users.perishable_token may not be NULL
如果我只使用一个rake命令来运行迁移,那么即使将迁移分成两部分也不起作用

第一部分

def self.up
    add_column :users, :perishable_token, :string

    add_index :users, :perishable_token
end
第二部分

def self.up
    User.all.each { |u| u.reset_perishable_token! }
    change_column :users, :perishable_token, :string, :null => false
end
只有当我在单独的rake进程中运行第一次和第二次迁移时,一切才能正常运行


可能的原因是什么?我如何修复它?

我想您需要添加

User.reset_column_information
…将易腐的\u令牌添加到用户\u表后,否则用户模型将与数据库不同步

我认为每个“rake db:migrate”只会加载一次用户模型,所以将迁移一分为二是没有帮助的