3

私は Ruby On Rails が初めてで、Rails 3.2.7 バージョンを使用しています。

Rails チュートリアルでは、「コマンド ラインで「rake db:migrate」を実行すると、データベースが最新バージョンにアップグレードされます」と記載されています。

誰か私にこれらの質問を明確にしてもらえますか??

  1. 「あなたのデータベースは最新バージョンにアップグレードされます」とはどういう意味ですか (私は MySQL 5 を使用しており、rails Development、test、および Production 用に 3 つのデータベースを作成しました)

  2. データベースはどのデータでアップグレードされますか??

  3. これら 3 つのデータベースを手動で作成し、database.yml ファイル内で構成しました。rake db:migrate の実行は必須ですか??

4

2 に答える 2

4

3)db:migrateの実行は必須ではありません。DB内のテーブル名をアプリケーションのモデル名にマップするだけで、アプリケーション内のテーブルのすべての属性にアクセスできます。移行は、アプリケーション内でテーブルとデータベースを管理できるようにするために使用されます(テーブルとその属性を作成するためにmysqlターミナルにアクセスする必要はありません)。一般に、アプリケーションが開発されているとき、データベース構造は時間の経過とともに変化します。つまり、移行を使用してmysqlターミナルに移動せずにテーブルの構造を変更したり、開発から本番環境に移行したりします。座ってDB構造全体を再度作成する必要はありません。すでに移行中ですが、本番モードでdb:migrateを実行するだけです。

2)わからない(私の知識が多すぎると、古いデータが可能な限り保存されます)

1)最初に、移行と対応するモデルで、属性が5つしかないことを示し、db:migrateを実行してそのテーブルをデータベースに取得し、開発の数日後に8つの属性が必要であることがわかったとします。次に、移行ファイルとモデルの構造を変更してから、db:migrateを再度実行すると、データベーステーブルの構造が3つの新しい属性で更新されます。

于 2012-09-17T11:41:36.967 に答える
1

これを参照してください

Railsは、特定の移行セットの実行に要約される移行を処理するための一連のrakeタスクを提供します。

使用する最初の移行関連のrakeタスクは、おそらくrake db:migrateです。最も基本的な形式では、まだ実行されていないすべての移行に対してupまたはchangeメソッドを実行するだけです。そのような移行がない場合は、終了します。これらの移行は、移行の日付に基づいて順番に実行されます。

db:migrateを実行すると、db:schema:dumpタスクも呼び出され、データベースの構造に一致するようにdb/schema.rbファイルが更新されることに注意してください。

ターゲットバージョンを指定すると、Active Recordは、指定されたバージョンに到達するまで、必要な移行(上、下、または変更)を実行します。バージョンは、移行のファイル名の数字のプレフィックスです。たとえば、バージョン20080906120000に移行するには、

$ rake db:migrate VERSION=20080906120000

バージョン20080906120000が現在のバージョンよりも大きい場合(つまり、上位に移行している場合)、20080906120000までのすべての移行でupメソッドが実行され、それ以降の移行は実行されません。下向きに移行する場合、これにより、20080906120000までのすべての移行でdownメソッドが実行されます。

于 2012-09-17T11:00:08.130 に答える