我正在编写一个脚本,负责将数据从生产数据库传输到新的生产数据库。
有一个Rails应用程序连接到每个数据库。在新的应用程序中,我们进行了一些更改架构的迁移(删除列等)
我试着这样做:
rails console old
2.0.0p247 :004 > tag = Tag.last.dup
=> #<Tag id: nil, description: " views", account_id: 46, screenshotBase64: "", user_id: 1, created_at: nil, updated_at: nil>
2.0.0p247 :005 > ActiveRecord::Base.establish_connection(:development)
2.0.0p247 :006 > tag.save
ActiveRecord::StatementInvalid: Mysql2::Error: Unknown column 'screenshotBase64' in 'field list
当我们删除新数据库中的screenshotBase64
时,它不起作用。
有没有办法用Rails做到这一点?保存前从Rails模型中删除属性?
有没有更好的方法来传输通过两个数据库之间的关联链接的用户的所有数据(更改新数据库中的ID)?
答案 0 :(得分:1)
请尝试使用此代码
tag_attributes = Tag.last.attributes.dup
%w(id screenshotBase64).map{|method| tag_attributes.delete method}
ActiveRecord::Base.establish_connection(:development)
tag = Tag.create(tag_attributes)