У меня есть следующая таблица с именем feeds
:
from_type | from_id
-----------+---------
user | 1
project | 1
user | 2
program | 1
program | 2
project | 1
challenge | 1
project | 3
community | 1
, и я хотел бы преобразовать ее в это:
from_type | user_id | project_id | program_id | challenge_id | community_id
-----------+---------+------------+------------+--------------+-------------
user | 1 | | | |
project | | 1 | | |
user | 2 | | | |
program | | | 1 | |
program | | | 2 | |
project | | 1 | | |
challenge | | | | 1 |
project | | 3 | | |
community | | | | | 1
Моя причина для этого состоит в том, чтобы обратная миграция, если нам нужно откатиться. Мне удалось преобразовать нижнюю версию в верхнюю версию с coalesce + update statement
, но я менее уверен, как выполнить обратную операцию.
Вот миграция вверх, как должна выглядеть миграция вниз?
class PolymorphicFeedTable < ActiveRecord::Migration[5.2]
def up
execute <<-SQL
UPDATE feeds SET
from_id = coalesce(user_id, project_id, community_id, challenge_id, program_id, need_id);
SQL
end
def down
execute <<-SQL
?
SQL
end
end