これは初心者の質問です。移行中に使用するマイグレーション(rake db:migrate)機能は、データベースを最新のものにするための厳密な制作ツールですか?Railsでの移行はどのように機能しますか?
1
A
答えて
1
理想的には、開発中にのみ移行を使用し、スキーマをロードして本番環境でデータベースをシードしたいと考えています。実際には、いくつかの変更を行ってから、何の害もなくプロダクションに展開することができます。
移行を使用すると、データベースでも作業を繰り返すことができます。あなたは何かを追加することを忘れることを心配する必要はありません。開始するときは、テーブルが正しいと思うように作成し、後で別の移行でテーブルを修正できます。それが基本的なアイディアです。それは1 dbスクリプトはそれらのすべての種類のものを取り除く。
少したとえば、ユーザー名とパスワードを使用してUserモデルを持っていて、電子メールのフィールドを追加する必要がある場合は、単にこの
を行うrails generate migration AddEmailToUser # this is a convention, but you can name it however you want
class AddEmailToUser < ActiveRecord::Migration
def change
add_column :users, :email, :string
end
end
移行を適用するときchange
方法は、両方の方法を動作しますまた、元に戻す必要がある場合もあります。これは、Rails 3.1の魔法のようなものです。
移行を追加したら、移行の古いバージョンこの
class AddEmailToUser < ActiveRecord::Migration
def up
add_column :users, :email, :string
end
def down
remove_column :users, :email
end
end
ようになり、ちょうどrake db:migrate
を実行し、すべてがうまく動作するはずです。移行の大きな利点は、あなたが手動で台無しデータベースを場合、あなたは簡単にだけ
rake db:drop
rake db:create
rake db:migrate
または
rake db:migrate:reset # this might not work if you messed up your migrations
を行うことができますし、私は「
0
移行は、データベーススキーマの変更を追跡します。そのすべての変更(列の名前の変更、表の変更、索引の追加など)は、移行を介して行う必要があります。複数のプロダクションサーバーに変更を展開するのは簡単です。
関連する問題
- 1. Redis Rails認証はどのように機能しますか?
- 2. Rails 3 + Transactions:どのように機能するのですか?
- 3. モバイルGmailのページ遷移はどのように機能しますか?
- 4. Rails 2.3.x - このActiveRecordスコープはどのように機能しますか?
- 5. 「推移的リゾルバ」はSBTとどのように機能しますか?
- 6. railsの移行は空のダウン関数では機能しません
- 7. DataMapper、Rails 3.1どのようにしてリポジトリの移行をスキップしますか?
- 8. Rails + Gems(一般):宝石はどのように機能しますか?
- 9. Node.jsでは、イベントループはどのように機能しますか?
- 10. シストリックアレイでのリタイミングはどのように機能しますか?
- 11. reduceLeftで型推論機能はどのように機能しますか?
- 12. ポーリング機能はどのようにcで機能しますか?
- 13. ActiveRecordの移行プログラムのバージョン管理はどのように機能しますか?
- 14. Androidノートパッドのチュートリアルで行の削除機能はどのように機能しますか?
- 15. Javaでfinalize()はどのように機能しますか?
- 16. Objective Cでプロトコルはどのように機能しますか?
- 17. Firebirdでサスペンドはどのように機能しますか?
- 18. weblogicでj_security_checkはどのように機能しますか?
- 19. インデックスではどのようにインデックスが機能しますか?
- 20. ブラウザでJavaScriptメモリはどのように機能しますか?
- 21. MethodImplAttributeは.NETでどのように機能しますか?
- 22. iOSでクラスメソッドはどのように機能しますか?
- 23. XUL :: Guiでfilepickerはどのように機能しますか?
- 24. 数式はJavaでどのように機能しますか?
- 25. __contains__はndarraysでどのように機能しますか?
- 26. NASMで「ケーステーブル」はどのように機能しますか?
- 27. モデルクラスでhas_secure_passwordはどのように機能しますか?
- 28. 城ActiveRecordでOnSaveはどのように機能しますか?
- 29. Visual Studioでインテリセンスはどのように機能しますか?
- 30. savedStateディクショナリはインストーラでどのように機能しますか?
を作成したデータベースの正しいバージョンを持っているということですそれをマスターするのに問題があります。どういうわけか私はそれを間違って使用しています。なぜなら、列を追加すると、テーブルにはすでにいくつかの列が存在することがわかります。マイグレーションの使い方を読んでどこかに案内してくれますか? – Roman
@Am。レールガイドhttp://guides.rubyonrails.org/migrations.htmlを見てください。 –