Ruby-on-rails-2.1-rails-migrations
Ruby on Rails 2.1-移行
Rails Migrationは、Rubyを使用してデータベーススキーマの変更を定義するため、バージョン管理システムを使用して、実際のコードとの同期を維持できます。
次のような多くの用途があります-
- 開発者のチーム-1人がスキーマを変更した場合、他の開発者は「rake migrate」を更新して実行するだけです。
- 実稼働サーバー-データベースを最新の状態にするために新しいリリースをロールアウトするときに「rake migrate」を実行します。
- 複数のマシン-デスクトップとラップトップの両方で開発する場合、または複数の場所で開発する場合、移行によりすべてのマシンを同期させることができます。
Railsの移行でできること
- create_table(名前、オプション)
- drop_table(name)
- rename_table(old_name、new_name)
- add_column(table_name、column_name、type、options)
- rename_column(table_name、column_name、new_column_name)
- change_column(table_name、column_name、type、options)
- remove_column(table_name、column_name)
- add_index(table_name、column_name、index_type)
- remove_index(table_name、column_name)
移行はすべての基本的なデータ型をサポートします-文字列、テキスト、整数、浮動小数点数、日時、タイムスタンプ、時間、日付、バイナリ、ブール-
- string -タイトルなどの小さなデータ型用です。
- text -説明などの長いテキストデータ用です。
- text -説明などの長いテキストデータ用です。
- 整数-整数用です。
- float -小数用です。
- date-time and timestamp -日付と時刻を列に保存します。
- 日付と時刻-日付のみまたは時刻のみを保存します。
- バイナリ-画像、音声、映画などのデータを保存するためのものです。
- boolean -trueまたはfalseの値を保存するためのものです。
有効な列オプションは-
- limit (:limit ⇒“ 50”)
- default (:default ⇒“ blah”)
- null (:null ⇒ falseはNOT NULLを意味します)
注-Rails移行によって行われるアクティビティは、フロントエンドGUIまたはSQLプロンプトで直接実行できますが、Rails移行により、これらのアクティビティはすべて非常に簡単になります
これらの詳細については、http://api.rubyonrails.org/classes/ActiveRecord/Migrationl [Rails API]を参照してください。
移行を作成する
移行を作成するための一般的な構文は次のとおりです-
これにより、db/migrate/001_table_name.rbファイルが作成されます。 移行ファイルには、データベーステーブルのデータ構造を記述する基本的なRuby構文が含まれています。
注-移行ジェネレーターを実行する前に、モデルジェネレーターによって生成された既存の移行をクリーンアップすることをお勧めします。
3つのテーブル( booksとsubject . )に対応する2つの移行を作成します。
本と件名に小文字を使用し、移行の作成時に複数形を使用していることに注意してください。 これは、移行を作成するたびに従うべきRailsパラダイムです。 −
コードを編集して何をすべきかを伝える
アプリケーションのdb/migrateサブディレクトリに移動し、シンプルなテキストエディターを使用して各ファイルを1つずつ編集します。
次のように001_books.rbを変更します-
ID列は自動的に作成されるため、ここでも実行しないでください。
メソッド self.up は新しいバージョンに移行するときに使用され、 self.down は必要に応じて変更をロールバックするために使用されます。 現時点では、上記のスクリプトを使用して books テーブルを作成します。
次のように002_subjects.rbを変更します-
上記のスクリプトは、 _ subjects_ テーブルの作成に使用されます。 subjectテーブルに5つのレコードを作成します。
移行を実行する
必要なすべての移行ファイルを作成したので、今度はデータベースに対してそれらを実行します。 これを行うには、コマンドプロンプトに移動し、アプリケーションが配置されているライブラリディレクトリを開き、次のように rake migrate と入力します-
これにより、「schema_info」テーブルが存在しない場合は作成され、現在のバージョンのデータベースが追跡されます。 データベースが現在のバージョンになるまで、新しい移行はそれぞれ新しいバージョンになり、新しい移行はすべて実行されます。
Rakeは、データベース構造の更新などの複雑なタスクの実行を簡素化するために、Railsが利用するUnix makeプログラムに類似したRubyビルドプログラムです。
本番データベースとテストデータベースの移行の実行
移行に使用するRails環境を指定する場合は、RAILS_ENVシェル変数を使用します。
たとえば-
注-Unixでは、_set_コマンドの代わりに「export RAILS_ENV = production」を使用します。
次は何ですか?
これで、データベースと必要なテーブルが利用可能になりました。 後続の2つの章では、コントローラー(ActionController)およびビュー(ActionView)と呼ばれる2つの重要なコンポーネントについて説明します。
- コントローラーの作成(アクションコントローラー)
- ビューの作成(アクションビュー)