Рельсовая миграция; объединение двух моделей - PullRequest
1 голос
/ 16 августа 2010

У меня есть таблица продуктов и одна из групп продуктов для их классификации. Теперь группы продуктов будут удалены, а их данные объединены в таблицу продуктов.

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

Затем я удалил модель ProductGroup, контроллеры и т. Д. И зафиксировал изменения.

В разработке все это работало нормально, но, очевидно, если я сейчас обновлю производственное приложение, оно сначала применяет изменения файловой системы (удаление модели ProductGroup и т. Д.), И миграция завершится неудачно, поскольку модель больше не существует.

Как лучше всего это решить? Я не должен был поместить передачу данных в миграцию? Похоже на улов-22.

1 Ответ

2 голосов
/ 17 августа 2010

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

class UpdateProducts < ActiveRecord::Migration 
  def self.up 
    add_column :products, :columns, :types

    Product.all.each do |product|
      product.update_attributes(ProductGroup.find_by_id(product.product_group_id).attributes)
      product.save
    end

    system("ruby script/destroy scaffold product_group")

    drop_table :product_groups
  end  

  def self.down 
    remove_column :products, :columns
    create_table :product_groups  
  end 
end 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...