воскресенье, 3 июля 2011 г.

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

Можно и так, но смысла от этого не более, чем вообще закомментировать
эту строку:
Строка в базе останется, а метод обвалится, потому что в маппинге
колонка не отражена.

On Jul 2, 11:32 am, "pavli...@gmail.com" <pavli...@gmail.com> wrote:
> А что если как-нибудь так?
>
> modify_table :products do
>   drop_column :okp_code rescue logger.info('cannot drop column okp_code, it
> does not exist')
> end
>
> 2011/6/29 Phil Pirozhkov (pirj) <pirjs...@gmail.com>
>
>
>
> > Не вижу необходимости, локально работает и так. (магия DataMapper?).
> > Проблема-то не в этом, а в консистентности и актуальности файла
> > маппинга.
> > Пока вижу выход - делать деплой и миграции после создания каждой оной
> > миграции. Просто для продакшна это не всегда возможно.
>
> > On Jun 29, 11:52 am, "a.ognevsky" <a.ognev...@gmail.com> wrote:
> > > Могу ошибаться, но перед циклом бы сделать
> > Product.reset_column_information
>
> > > --
> > > Andrey Ognevsky
>
> > > On Wednesday, June 29, 2011 at 3:34 AM, Phil Pirozhkov (pirj) wrote:
> > > > Возможно, вопрос глупый с точки зрения рельсовика-активрекордщика, но
> > > > тем не менее.
> > > > За свою жизнь мне удалось избежать великого и ужасного 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
>
> > --
> > --
> > Данное сообщение отправлено Вам, так как Вы являетесь подписчиком группы
> > "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

--
--
Данное сообщение отправлено Вам, так как Вы являетесь подписчиком группы "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

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

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