Я сталкиваюсь с проблемой в RoR, которая находится за пределами моего понимания. Это сценарий, но он соответствует проблеме, которую я должен решить для приложения Rails, уже работающего с тысячами пользователей.
Скажем, у меня есть модель (на самом деле, у меня много моделей, у которых есть эта проблема) , но проблема должна быть похожей?)
Class User << ApplicationRecord
#and the logic here
end
# with the following schema
create_table "users", force: :cascade do |t|
t.string "name", null: false
t.string "description", null: false
#and more
end
Но теперь я реализовал гораздо более приятный description
на своем Frontend, который использует хороший HTML wisiwig. Поэтому я создал методы для очистки содержимого et c. Через некоторое время мне нужно добавить столько функций в это поле description
, что поддерживать его как string
в БД становится громоздко!
Я хочу создать текстовую модель, в которой можно сохранить все эти данные, чтобы я мог повторно использовать ее для многих моделей в моем приложении с помощью polymorphi c ассоциация
Итак, я хочу иметь
Class User << ApplicationRecord
has_one :description, as :textable
# and some more logic
end
Class Text << ApplicationRecord
# Here goes the whole text logic, auto translation etc etc
belongs_to :textable, :polymorphic => true
end
# with the following schema
create_table "users", force: :cascade do |t|
t.string "name", null: false
#and more
end
create_table "texts", force: :cascade do |t|
t.string "textable_type"
t.bigint "textable_id"
t.string "content"
#and more
end
Как мне изменить это И перенести содержимое User.description в новую запись текста, которую я затем прикреплю как описание
Я знаю, что мог бы сделать это через консоль болезненным способом, но есть ли способ Rails , чтобы сделать это? Мои интуитивные ощущения говорят мне, что это может быть сделано во время миграций?
Спасибо!