Rails / Mongoid миграции баз данных - PullRequest
1 голос
/ 27 марта 2012

В настоящее время я работаю над приложением rails, где мы используем mongoid / mongoDB на серверной части.Я понимаю, что мне не нужен ActiveRecord, такой как миграция, для переноса схемы, но мне нужно переносить данные при изменении определений модели mongoid.Кто-нибудь еще сталкивался с таким же сценарием? Если да, то как вы справляетесь с этим?

Ответы [ 4 ]

7 голосов
/ 27 июня 2013

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

class MyMigration < Mongoid::Migration

  def self.up
    MyModel.all.each do |model|
      # label was renamed to name
      model.set :name, model[:label] # copy the data from the old field to the new one
      model.remove_attribute :label # remove the old field from the document
      model.save!
    end
  end

end
1 голос
/ 27 марта 2012

Напишите пользовательскую задачу rake для переноса данных по мере необходимости

0 голосов
/ 04 января 2013

Недавно у меня был какой-то сценарий, когда мне нужно выполнить миграцию данных только один раз (в основном, обновить грязные данные);Итак, у меня есть mongoid migrations в / db / migrate /, и я переопределил задачу db: migrate, чтобы она создала в mongo db коллекцию самого приложения, скажем, "migrations", которая записывает миграцию, которая была запущена, с этимни одна из миграций не будет запущена снова, и вы можете продолжать добавлять миграции с некоторой иерархией (если в случае миграции взаимозависима).

0 голосов
/ 28 марта 2012

Этот вопрос касается той же проблемы создания пользовательских миграций в mongoid-установке.

Изменяемая модель во время выполнения с mongodb / mongoid

...