列名を変更する Rails 質問する

列名を変更する Rails 質問する

次のような表があります:

class CreateShoes < ActiveRecord::Migration
  def change
    create_table :shoes do |t|
      t.string :name
      t.boolean :leather
      t.integer :season

      t.timestamps null: false
    end
  end
end

「season」列は「season_id」という名前にする必要があります。説明されているように、「t.rename :season, :season_id」と記述する必要があることはわかっています。http://edgeguides.rubyonrails.org/active_record_migrations.html#列修飾子しかし、正しい構文を見つけることができません。そうすべきでしょうか?

class CreateShoes < ActiveRecord::Migration
  def change
    create_table :shoes do |t|
      t.string :name
      t.boolean :leather
      t.integer :season

      t.timestamps null: false
    end

    change_table :products do |t|
      t.rename :season, :season_id
    end

  end
end

動作しません。Mac コンソールで何かする必要がありますか? ありがとうございます!

ベストアンサー1

コンソールで実行します:

$ rails g migration rename_season_to_season_id

現在、ファイルdb/migrate/TIMESTAMP_rename_season_to_season_id.rbには次の内容が含まれています:

class RenameSeasonToSeasonId < ActiveRecord::Migration
  def change
  end
end

次のように変更します。

class RenameSeasonToSeasonId < ActiveRecord::Migration
  def change
    rename_column :shoes, :season, :season_id
  end
end

次に$ rake db:migrateコンソールで実行します。

おすすめ記事