私は現在、mongoid/mongoDBをバックエンドで使用しているレールアプリを開発中です。私はスキーマを移行するためにActiveRecordのような移行は必要ないと理解していますが、モンゴイドモデルの定義を変更するとデータを移行する必要があります。そこにいる誰もが同じシナリオを実行していますか?もしそうなら、あなたはそれをどのように扱っていますか?Rails/Mongoidデータベースの移行
答えて
が必要
ありがとう。私はそれを考えていましたが、私はこれを一度実行する必要があります。 –
私は従いません。レーキタスクは、1回または何回でも簡単に実行できます。一度実行してからタスクを削除してください。 – cpjolicoeur
私はそれが一度実行され、その後、そのレコードがデータベースにとどまっている限り、再び実行されないように実行されたある種のレコードを持っています。しかし、いったんコードを実行すると、コードを削除するだけのことは考えていませんでした。 –
としてデータを移行するためのカスタムrakeタスクを書くこの質問はmongoidセットアップでカスタム移行を作成するのと同じ問題を解決します。
私は一度だけ、いくつかのデータ移行を行う必要があり、最近いくつかのシナリオを、(基本的にはダーティデータを更新)持っていました。 だから私は/ db/migrate /にmongoidの移行を行い、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)'です。これはアトミックな$リネームを実行し、手動で実行して保存するよりはるかに優れたパフォーマンスを提供します。 'mongoid_rails_migrations'の+1 – Jay
- 1. データベース移行notnull()?
- 2. SQLデータベースの移行
- 3. Firebaseデータベースの移行
- 4. Orbeonデータベースの移行
- 5. Yesodデータベース移行ループ
- 6. grails 3データベース移行
- 7. Openvswitch(ovsdb)データベースの移行
- 8. Grailsデータベースの移行ロードデータ
- 9. 多くのデータベース移行ファイル
- 10. Asp.netコアコード初のデータベース移行
- 11. Laravelデータベースの移行エラー
- 12. 移行複数のデータベース
- 13. 既存のデータベースと移行
- 14. データベースの移行とビュー
- 15. sqlcipherでのデータベース移行
- 16. Rubyシンプルなデータベースの移行
- 17. djangoプロダクションでのデータベース移行
- 18. MS Accessのデータベース移行
- 19. herokuのFlaskデータベース移行
- 20. C#でのデータベース移行
- 21. Laravelデータベースの移行手順
- 22. Railsデータベースの移行エラー
- 23. Grailsデータベースの移行 - 以前の移行の変更
- 24. Phalcon Dev Tools - データベース移行
- 25. データベースのインポート後に移行を移行済みとマークする
- 26. 既存のデータベース上のRailsの移行
- 27. 単一データベースへの移行の準備
- 28. 複数のMercurialブランチでのデータベース移行
- 29. djangoの移行 - データベースの再作成
- 30. AzureでのDNX(EF7)データベースの移行
https://github.com/adacosta/mongoid_rails_migrations – rubish