Я хотел бы знать "правильный" способ приблизиться к добавлению связи между двумя существующими классами в Rails 3.
Учитывая существующие модели: Clown and Rabbit
Я хочу добавить ссылку (принадлежит_от) от Кролика к Клоуну. Сначала я попытаюсь создать миграцию:
rails g migration AddClownToRabbits clown:reference
который дает мне миграцию, которая выглядит так:
class AddClownToRabbits < ActiveRecord::Migration
def self.up
add_column :rabbits, :clown, :reference
end
def self.down
remove_column :rabbits, :clown
end
end
После rake db:migrate
в этой миграции я рассмотрю SQLite3 development.db и увижу новый столбец: "clown" reference
Я предполагаю, что ожидал столбец "clown_id" integer
и миграцию, которая выглядела так:
class AddClownToRabbits < ActiveRecord::Migration
def self.up
add_column :rabbits, :clown_id
end
def self.down
remove_column :rabbits, :clown_id
end
end
Я уверен: ссылка должна быть эквивалентна "t.references: clown", но я не могу найти документацию (большой сюрприз). API говорит add_column: Instantiates a new column for the table. The type parameter is normally one of the migrations native types, which is one of the following: :primary_key, :string, :text, :integer, :float, :decimal, :datetime, :timestamp, :time, :date, :binary, :boolean.
... без ссылки на: reference.