我必须创建另一个表来提取一些列
我my_tables
有很多列,但需要提取一些才能在其他地方使用。
所以my_new_table
存在,但它没有user
中的guest
和my_tables
列中的数据...
所以我必须回滚我的迁移并插入一些SQL我猜?从my_tables
user & guest
获取数据?
怎么办呢?
class CreateMyNewTables < ActiveRecord::Migration
def change
create_table :my_new_tables do |t|
t.string :user
t.string :guest
t.references :my_tables, index: true
t.timestamps null: false
end
#how to keep the data I already have in Guest and User
remove_column :my_tables, :guest
remove_column :my_tables, :user
end
end
答案 0 :(得分:0)
如果表格不是太大,最简单的方法可能是在迁移过程中使用几行Ruby代码复制数据。这有利于使用现有的关联和验证,并且代码更易于阅读和理解Ruby开发人员。
在巨大的表上,我建议在普通的SQL中进行,因为这会更快。
我假设您同时拥有MyTable
和MyNewTable
型号。
def up
create_table :my_new_tables do |t|
t.string :user
t.string :guest
t.references :my_tables, index: true
t.timestamps null: false
end
MyNewTable.reset_column_information
MyTable.find_each do |table|
MyNewTable.create(user: table.user, guest: table.guest, my_table: table)
end
remove_column :my_tables, :guest
remove_column :my_tables, :user
end