我需要将一些列从一个现有表移动到另一个表。如何使用 Rails 迁移来完成此操作?
class AddPropertyToUser < ActiveRecord::Migration
def self.up
add_column :users, :someprop, :string
remove_column :profiles, :someprop
end
def self.down
add_column :profiles, :someprop, :string
remove_column :users, :someprop
end
end
上面只是创建了新列,但值保留为空......
我想避免登录数据库来手动更新表。
如果有一种方法可以以编程方式移动列值,那么性能特征是什么?是逐行更新还是有办法批量更新?
我最终使用了此迁移(经过测试,它有效,并且成功回滚):
class AddPropertyToUser < ActiveRecord::Migration
def self.up
add_column :users, :someprop, :string
execute "UPDATE users u, profiles p SET u.someprop = p.someprop WHERE u.id = p.user_id"
remove_column :profiles, :someprop
end
def self.down
add_column :profiles, :someprop, :string
execute "UPDATE profiles p, users u SET p.someprop = u.someprop WHERE p.user_id = u.id"
remove_column :users, :someprop
end
end
我喜欢它,因为它避免了大型数据库上的逐行更新。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)