вторник, 28 июня 2011 г.

миграции с удалением полей

Возможно, вопрос глупый с точки зрения рельсовика-активрекордщика, но
тем не менее.
За свою жизнь мне удалось избежать великого и ужасного AR, и я всегда
старался делать проекты на DataMapper, а модели хранить в актуальном
виде в соответствующих файлах, а не все вперемешку в schema.rb.

Получается примерно так, есть некая сущность, например, товар, у
которого есть проперти :okp_code, где в стринговом виде указан некий
код. В какой-то момент удалось добыть базу расшифровок этих кодов, и
появилась табличка okp. Хочется, чтобы в товаре теперь была не
текстовая ссылка, а ссылка на таблицу okp. Делаю примерно так:


migration 15, :change_products do
up do
modify_table :products do
add_column :okp_id, Integer
end
Product.each do |product|
product.okp = Okp.first :code => product.okp_code
throw product.errors unless product.save
end
modify_table :products do
drop_column :okp_code
end
end
...


и потом со спокойной совестью удаляю строку

property :okp_code, String, length => 15

из файла маппинга

Локально всё отлично, но при деплое выйдет, что миграция не пройдёт,
потому что в маппинге уже нету поля okp_code (хотя в базе ещё есть),


Пока смирился с мыслью пойти спать, а утром потихоньку переползать на
положенный проекту Mongoid/MongoDB

--
--
Данное сообщение отправлено Вам, так как Вы являетесь подписчиком группы "RubyOnRails to russian" на группах Google.
FAQ группы находится по адресу: http://ru.wikibooks.org/wiki/RubyFAQ

Для того, чтобы отправить сообщение в эту группу, пошлите его по адресу
ror2ru@googlegroups.com
Чтобы отменить подписку на эту группу, отправьте сообщение по адресу: ror2ru-unsubscribe@googlegroups.com
Дополнительные варианты находятся на странице группы http://groups.google.com/group/ror2ru?hl=ru

Комментариев нет:

Отправить комментарий