Me gustaría saber la forma "correcta" para acercarse a la adición de una relación entre dos clases existentes en Rails 3.Adición de un modelo de referencia para los carriles existentes modelo
Dados los modelos existentes: payaso & conejo
Me gustaría agregar una referencia (belongs_to) de Rabbit to Clown. Comienzo por tratar de generar una migración:
rails g migration AddClownToRabbits clown:reference
que me da una migración que se parece a:
class AddClownToRabbits < ActiveRecord::Migration
def self.up
add_column :rabbits, :clown, :reference
end
def self.down
remove_column :rabbits, :clown
end
end
Después rake db:migrate
en esta migración examino development.db de SQLite3 y ver una nueva columna: "clown" reference
supongo que estaba esperando una columna "clown_id" integer
y una migración que parecía:
class AddClownToRabbits < ActiveRecord::Migration
def self.up
add_column :rabbits, :clown_id
end
def self.down
remove_column :rabbits, :clown_id
end
end
Estoy seguro: se supone que la referencia es equivalente a "t.references: clown" pero no puedo encontrar la documentación (gran sorpresa). API dice 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.
... sin referencia a: referencia.
Para la documentación (si es una referencia en la documentación, si eso cuenta) consulte http://guides.rubyonrails.org/getting_started.html y desplácese hacia abajo hasta 7.1 Generar un modelo y ver el fragmento de código debajo de ese título . Verá que es *: referencias * en lugar de *: referencia *. – iconoclast