При создании новой таблицы или добавлении столбца в существующую таблицу с помощью t.references
:
class CreateCars < ActiveRecord::Migration[5.0]
def change
create_table :cars do |t|
# aka belongs_to
t.references :primary_car, foreign_key: { to_table: 'cars' }
t.timestamps
end
end
end
class AddPrimaryCarToCars < ActiveRecord::Migration[5.0]
def change
change_table :cars do |t|
# aka belongs_to
t.references :primary_car, foreign_key: { to_table: 'cars' }
end
end
end
Чтобы добавить ограничение внешнего ключа в существующий столбец:
class AddForeignKeyToCars < ActiveRecord::Migration[5.0]
def change
# the column cars.primary_car_id must already exist
add_foreign_key :cars, :cars, column: :primary_car_id
end
end
Это известно как self-join или ассоциативная ссылка.