我有这个迁移,即编辑所有预先存在的配置文件。迁移无效。
class FixProfilesForNewFields < ActiveRecord::Migration
def change
Profile.all do |p|
p.public = true
p.email_settings = "normal"
p.save
end
end
end
答案 0 :(得分:1)
试试这个:
class FixProfilesForNewFields < ActiveRecord::Migration
def change
Profile.all do |p|
p.public = true
p.email_settings = "normal"
p.send
p.save!
end
end
end
答案 1 :(得分:1)
尝试使用def self.up
代替def change
(当然等同于def self.down
)
如果您在查询前有结构更改说明,则需要在查询前致电Profile.reset_column_information
结果:
class FixProfilesForNewFields < ActiveRecord::Migration
def self.up
# change_column, add_column, etc ...
Profile.reset_column_information
Profile.all do |p|
p.public = true
p.email_settings = "normal"
p.save
end
end
def self.down
# remove_column, change_columns, etc...
end
end
如果你仍有问题,你应该使用backtrace选项运行rake并在你的问题中粘贴错误堆栈rake db:migrate --backtrace