2010-01-30 9 views
6

que tienen un modelo en mi aplicación Rails que utiliza el atributo :class_name para has_one:Si utilizo: class_name attribute to has_one, ¿qué pongo en la migración?

class Foo < ActiveRecord:Base 
    has_one :main_bar, :class_name => "Bar" 

    # ... 
end 

Soy un poco sin saber qué poner en la migración de esta clase ahora. ¿Puedo usar referencias? ¿Qué buscará Rails como el nombre de la columna :main_bar? ¿Puedo hacerlo así?

class CreateFoos < ActiveRecord::Migration 
    def self.up 
    create_table :foos do |t| 
     t.references :main_bar 
    end 
    end 

    def self.down 
    drop_table :foos 
    end 
end 

¡Gracias!

Respuesta

7

No pone nada en la tabla con la relación "has_one". La clave_externa va en la otra tabla. En su ejemplo anterior, deberá agregar una clave externa a su tabla bars.

en la migración que puede utilizar:

t.references :foo 

o:

t.integer :foo_id 

Cualquiera de los dos va a funcionar.

Cuestiones relacionadas