Я хотел бы знать, как правильно подходить к добавлению отношения между двумя существующими классами в Rails 3.
Учитывая существующие модели: Клоун и Кролик
Я бы хотел добавить ссылку (принадлежащую) от Кролика к Клоуну. Я начинаю с попытки сгенерировать миграцию:
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.
... без ссылки на: ссылку.