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