В настоящее время я работаю над приложением rails, где мы используем mongoid/mongoDB на внутреннем сервере. Я понимаю, что мне не нужен ActiveRecord, как перенос, чтобы перенести схему, но мне нужно перенести данные, поскольку я изменяю определения моделей mongoid. Кто-нибудь еще работает в одном и том же сценарии, если да, то как вы его обрабатываете?Переходы базы данных Rails/Mongoid
ответ
Написать задание пользовательских рейк для переноса данных по мере необходимости
Спасибо. Я подумал об этом, но мне нужно, чтобы это запускалось один раз. –
Я не следую. Вы можете легко запустить задачу рейка один или несколько раз, как вы хотите. Запустите его один раз, а затем удалите задачу. – cpjolicoeur
Итак, я хочу, чтобы он запускался один раз, а затем имел какую-то запись, которая была запущена, поэтому она никогда не будет запущена снова, пока эта запись останется в базе данных. Однако я не думал просто удалять код после его запуска. –
Этот вопрос касается того же вопроса о создании пользовательских миграции в Mongoid установки.
у меня был какой-то сценарий, в последнее время, когда я должен сделать некоторые миграции данных только один раз (в основном обновление грязных данных); Итак, у меня были миграции mongoid в/db/migrate/и переопределить задачу db: migrate, чтобы она создавала коллекцию в mongo db этого приложения, скажем, «миграции», которые записывают перенесенную миграцию, с что ни одна миграция не будет запущена снова, и вы можете продолжать добавлять миграции с некоторой иерархией (если в случае миграции является взаимозависимой).
Даже если вы не изменяете схему, вам может потребоваться переместить данные между полями или удалить поля, которые больше не используются в кодовой базе. Приятно иметь миграцию, которую можно запускать при развертывании нового кода. Я рекомендую использовать драгоценный камень под названием 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
Просто голова, построенная таким образом, это 'MyModel.all.rename (label:: name)'. Это выполняет атомное переименование $ и даст вам гораздо лучшую производительность, чем ручной переход и сохранение. +1 для 'mongoid_rails_migrations' :) – Jay
- 1. Переходы базы данных EF
- 2. Переходы базы данных для Entity Framework 4
- 3. Переходы базы данных в режиме роуминга докеров
- 4. переходы базы данных рельсов с использованием транзакций
- 5. Переходы базы данных с Qt4 (изменения схемы)
- 6. Переходы базы данных на производство django
- 7. magento 1 переходы на миграцию базы данных
- 8. Переходы Laravel с пользователем корневой базы данных
- 9. Переходы базы данных EF5: как включить FILESTREAMS
- 10. Переходы, переходы и переходы в D3
- 11. Переходы Laravel не работают
- 12. Переходы Django
- 13. D3: Как подключить переходы для вложенных данных?
- 14. Переходы d3 с использованием двух наборов данных
- 15. медленные переходы страниц из-за привязки данных
- 16. Группы данных D3.js и переходы
- 17. Переходы CSS3 переходы в хроме при обновлении
- 18. База данных базы данных базы данных базы данных?
- 19. SQL базы данных базы данных
- 20. Расчет базы данных базы данных
- 21. Переходы Django: отношения не существует
- 22. Jquery переходы
- 23. CSS3 Переходы
- 24. Передвижные переходы
- 25. Caurina Переходы
- 26. Dhtml Переходы
- 27. css переходы
- 28. Возможны переходы Doctrine2 через пучки?
- 29. Переходы и данные RoR
- 30. Переходы базы данных Entity Framework 6 для изолированной установки нескольких арендаторов
https://github.com/adacosta/mongoid_rails_migrations – rubish