22

idRailsアプリがあり、モデルの1つに列がありません。いくつかの調査を行って、私はそれを作成した移行を見つけました:

create_table(:the_model, :id => false) do |t|
  # columns
end

idここで、新しい移行時に、Railsの標準的な方法で列を追加したいと思います(データベース固有のSQLを使用しません)。どうやってやるの?

私はすでにこれを試しましたが成功しませんでした:

change_table(:the_model, :id => true) do |t|
end
4

3 に答える 3

46

id列を手動で追加することができます。

add_column :table_name, :id, :primary_key

または、データをクリア(またはバックアップ)し、この移行にロールバックし、オプションを削除して:id => false、再移行します。

于 2012-09-23T00:43:16.943 に答える
7

言及する必要はありません:integer

rails g migration add_id_to_model id:primary_key私のために働いた。

于 2016-02-17T09:14:41.567 に答える
4

あなたはすでにあなたの答えを得ています、しかしここにこの場合すべてをするワンライナーがあります

rails generate migration AddIdToModel id:integer

列の説明に続いて、移行ファイル名Add ColumnNameToTableNameの構文を確認してください。以下のようなものが生成されます

class AddIdToModel < ActiveRecord::Migration
  def change
    add_column :models, :id, :integer
  end
end

これで、他に何か気になる場合は、この行を変更できます。実行するだけrake db:migrateです。

于 2012-09-23T06:17:00.310 に答える