将现有连接表数据移动到另一个连接表

时间:2013-10-12 02:01:57

标签: sql ruby-on-rails join rails-migrations

我有一个rails应用程序,它有一个非常破坏的表关系,我正在尝试清理。

目前我有一个产品和一个人,他们之间有三个不同的联接表:艺术家,作家和封面主题。

我正在尝试将数据从三个现有的连接表迁移到一个名为creators的新连接表中。新创建者加入包括角色列。

这是我的迁移文件,用于将数据从三个连接中的一个连接到新连接。 但是当我运行它时,我没有看到新表中的任何数据。

def up
  execute <<-SQL
    UPDATE creators
    SET product_id = products_artists.product_id,
      person_id = products_artists.person_id,
      role = 'artist'
    FROM products_artists
  SQL
end

def down
  execute <<-SQL
    UPDATE products_artists
    SET product_id = creators.product_id,
      person_id = creators.person_id
    FROM creators
    WHERE creators.role = 'artist'
  SQL
end

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

啊,我正在寻找一个不是更新的插页。

def up
  execute <<-SQL
    INSERT INTO creators (product_id, person_id, role, created_at, updated_at)
    SELECT product_id, person_id, 'artist', current_timestamp, current_timestamp
    FROM products_artists
  SQL
end

def down
  execute <<-SQL
    INSERT INTO products_artists (product_id, person_id)
    SELECT product_id, person_id
    FROM creators
    WHERE role = 'artist'
  SQL
end