Я пытаюсь запустить следующую миграцию
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_perishable_token!
ведут себя странно (нет возвращаемого значения, поле базы данных не изменяется). Следовательно change_column ..., :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, все работает нормально.
В чем может быть причина и как я могу это исправить?