1

次のように定義されたテーブルがあります。

def self.up
 create_table "equipes", :primary_key => "equipe_id", :force => true do |t|
  t.string   "equipe_nom",                   :limit => 30,   :null => false
  t.string   "equipe_nom_pseudo",    :limit => 8,    :null => false
  t.string   "equipe_manager",       :limit => 40
  t.string   "equipe_telephone_1",   :limit => 22
  t.string   "equipe_adresse_email", :limit => 50
  t.string   "equipe_responsable",   :limit => 50

  t.timestamps
end

フィールド「equipe_nom」の制限を30から150に変更したいと思います。

それを行うための最良の方法は何ですか?

RAKE GMIGRATIONを使用できますか....??

ありがとう

4

1 に答える 1

2

まず第一に、rakeコマンドとコマンドを混同しないでくださいrailsRakemake コマンドよりも少し高度なタスクを実行するコマンドです。railsRails フレームワークによって提供されるコマンドで、たとえば、アプリの作成、移行の生成などを行います。パラメーターを指定せずにターミナルにrails入力するだけで、すべてのコマンドとその効果のリストを取得できます。移行が生成されます。移行の詳細については、この Rails ガイド を参照してくださいrailsrails g migration migrationname

それが邪魔にならないので、問題を解決するには2つの可能性があります。

  • 以前にこの移行を実行したことがあり、それが最後の移行である場合は、 を実行しrake db:rollback、上記の移行ファイルの値を変更して保存し、rake db:migrate再度実行する必要があります。これにより、最初に最後の移行が元に戻され (この場合、テーブル "equipes" が削除されます)、次に変更を加えて再度実行されます。
  • これが古い移行である場合は、 を実行して新しい移行を作成できますrails g migration change_equipe_nom_to_limit_150。作成したファイルを見てください。内部def up書き込み: change_column :equipes, :equipe_nom, :string, :limit => 150. ファイルを保存して実行rake db:migrate

どちらのケースが当てはまるかわからない場合は、2 番目のケースを実行してください。それは常に機能します。

于 2013-01-09T21:24:05.000 に答える