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”只会加载一次用户模型,所以将迁移一分为二是没有帮助的