Как можно заменить некоторые жестко запрограммированные файлы на модели с активной записью? - PullRequest
0 голосов
/ 12 июля 2011

Прямо сейчас в моей модели продуктов есть строковый столбец категории, а форма имеет выбор, который получает свои значения из массива в модели продукта.На данный момент существует только три возможных категории: wood_stoves, arborist_gear и бензопилы.У меня есть контроллер с действием для каждого из них, в котором перечислены продукты для их соответствующей категории.

Я переключаю категории в таблицу базы данных и вкладываю в нее продукты с помощью отношений has_many и own_to, и вот мойвопрос.Является ли следующее плохой идеей?

  1. Создать запись для каждого из wood_stoves, arborist_gear и цепных пил.
  2. Создать миграцию, которая преобразует значение каждого из этих продуктов /столбец категории в соответствующее целое число идентификатора записи из вновь созданных записей категорий.
  3. Добавьте к миграции шаг, который изменяет столбец category.string на столбец category.integer.
  4. Добавьте кПеренесите необходимые шаги вниз, чтобы отменить все это.

Короче говоря, должен ли я делать все это в процессе миграции, чтобы он был обратимым, или я должен отказаться от обратимости и вручную внести изменения в базу данных, чтобы избежатьнесколько нелепо выглядящая миграция, которая сможет обратить вспять только те продукты, которые соответствуют исходным категориям?Другими словами, миграция не сможет отменить продукты, принадлежащие вновь созданным категориям.

1 Ответ

1 голос
/ 12 июля 2011

Звучит хорошо. Единственное, что я бы сделал по-другому - это придерживаюсь соглашения Rails о том, чтобы имя столбца внешнего ключа заканчивалось на «_id». Так проще жить. В вашем случае удалите столбец category из модели продуктов и добавьте столбец category_id.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...