В чем разница между использованием t.integer и t.reference для определения внешних ключей в миграции rails - PullRequest
5 голосов
/ 03 апреля 2012

Учитывая два класса, Apple и Orange:

def class Apple < ActiveRecord::Base
  has_and_belongs_to_many :oranges
end

def class Orange < ActiveRecord::Base
  has_and_belongs_to_many :apples
end

В чем разница между использованием t.integer для определения внешних ключей в таблице соединений:

create_table :apples_oranges, :id => false do |t|
  t.integer :apple_id
  t.integer :orange_id
end

и использование t.references для определения внешних ключей в таблице соединений:

create_table :apples_oranges, :id => false do |t|
  t.references :apple
  t.references :orange
end

Я видел оба, и они кажутся взаимозаменяемыми. Просто хотел убедиться, что нет какой-то тонкости / магии, которую я пропускаю.

О, и я на Rails 3.2 с MySQL

1 Ответ

8 голосов
/ 03 апреля 2012

http://guides.rubyonrails.org/migrations.html#special-helpers

Никакой магии как таковой. Делает миграцию более читабельной, более понятной, если вы хотите, и если вы используете полиморфизм, также добавляет столбец типа. Так что, либо, но ссылки лучше, потому что это так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...