を作成する必要がuser_id
ある場合は、ユーザーテーブルを参照していることを前提としています。この場合、移行は次のようになります。
rails generate migration AddUserRefToProducts user:references
このコマンドは、次の移行を生成します。
class AddUserRefToProducts < ActiveRecord::Migration
def change
add_reference :user, :product, index: true
end
end
列とインデックスのrake db:migrate
両方を実行user_id
すると、products
テーブルに追加されます。
あなただけ例えば、既存の列にインデックスを追加する必要がある場合name
のuser
表は、以下の技術が役立つことがあります。
rails generate migration AddIndexToUsers name:string:index
次の移行が生成されます:
class AddIndexToUsers < ActiveRecord::Migration
def change
add_column :users, :name, :string
add_index :users, :name
end
end
add_column
行を削除して移行を実行します。
説明されているケースでは、rails generate migration AddIndexIdToTable index_id:integer:index
コマンドを発行してadd_column
から、生成されたマイグレーションから行を削除することができます。ただし、最初の移行を元に戻し、代わりに参照を追加することをお勧めします。
rails generate migration RemoveUserIdFromProducts user_id:integer
rails generate migration AddUserRefToProducts user:references