我有一张与神秘相关的表披萨,目前看起来像这样
|pizza_id|mystery_id|name|description|
|1 |1 |fun |really fun |
|2 |1 |car |it is fast |
|3 |1 |hou |i live! |
|4 |1 |air |breathy |
在我迁移之后,我希望它看起来像这样:
|pizza_id|mystery_id|name|description|
|1 |1 |fun |really fun |
|2 |1 |car |it is fast |
|3 |1 |hou |i live! |
|4 |1 |air |breathy |
|5 |2 |fun |really fun |
|6 |2 |car |it is fast |
|7 |2 |hou |i live! |
|8 |2 |air |breathy |
基本上我只想复制表的数据,然后将其粘贴回同一个表中,但略有不同。更糟糕的是,我在轨道上看到红宝石。
我试过了,但我只是想弄清楚复制表格的语法,然后用更改的数据粘贴表格。更糟糕的是我的测试站点是sqlite,我的生产服务器是MYSQL。所以我不能只写一个或者它必须使用ruby迁移语法。
这个stackoverflow question看起来很有用,但是它正在复制到另一个表中,它只使用ruby而不是ruby迁移在迁移中是合法的吗?任何帮助将不胜感激。
答案 0 :(得分:4)
迁移不是在这里使用的正确选择。迁移用于调整数据库结构;他们不会插入,删除或修改记录。
您可能想要使用seeds.db(使用初始数据为数据库播种)或者只是在rails控制台或独立脚本中执行操作。
使用seeds.db:
从空的披萨数据库开始,假设您的Pizza
模型包含belongs_to :mystery
Mystery.create({ /* mystery params */ }) // Create mystery 1
Mystery.create({ /* mystery params */ }) // Create mystery 2
pizza_data = [
{ name: 'fun', description: 'really fun' },
{ name: 'car', description: 'it is fast' },
{ name: 'hou', description: 'i live!' },
{ name: 'air', description: 'breathy' },
]
Mystery.all.each do |mystery|
pizza_data.each do |pizza_params|
mystery.pizza.create(pizza_params)
end
end
然后在终端中要运行bundle exec rake db:seed
(有关seeds.rb的更多信息,请参阅http://www.xyzpub.com/en/ruby-on-rails/3.2/seed_rb.html)
使用rails console / script:
如果您想使用rails控制台手动执行此操作,并在终端中输入rails c
预先存在的披萨行并输入:
Pizza.all.each { |p| Pizza.create(mystery_id: 2, name: p.name, description: p.description) }
答案 1 :(得分:-1)
我使用了一些我注意到的堆栈溢出问题,这就是我提出的问题。我最终确实使用了迁移,但它运行良好。
async.series([
function(callback) {
});
},
function(callback) {
async.forEachSeries(temp,function(quest,callback) {
}, function(err) {
if (err) return next(err);
});
callback();
}
],
function(err) {
if (err) return next(err);
res.json(output);
});