を作成する必要が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