No he podido encontrar ninguna documentación sobre el método .build en Rails (actualmente estoy usando 2.0.2).
A través de la experimentación, parece que puede usar el método de compilación para agregar un registro a una has_many
relación antes de que cualquiera de los registros se haya guardado.
Por ejemplo:
class Dog < ActiveRecord::Base
has_many :tags
belongs_to :person
end
class Person < ActiveRecord::Base
has_many :dogs
end
# rails c
d = Dog.new
d.tags.build(:number => "123456")
d.save # => true
Esto guardará tanto el perro como la etiqueta con las claves externas correctamente. Esto no parece funcionar en una belongs_to
relación.
d = Dog.new
d.person.build # => nil object on nil.build
También he intentado
d = Dog.new
d.person = Person.new
d.save # => true
La clave foránea Dog
no está configurada en este caso debido al hecho de que en el momento en que se guarda, la nueva persona no tiene una identificación porque aún no se ha guardado.
Mis preguntas son:
¿Cómo funciona Build para que Rails sea lo suficientemente inteligente como para descubrir cómo guardar los registros en el orden correcto?
¿Cómo puedo hacer lo mismo en una
belongs_to
relación?¿Dónde puedo encontrar documentación sobre este método?
Gracias
belongs_to
" y "Métodos agregados porhas_one
" . Se puede encontrar más documentación técnica en los documentos de API:belongs_to
yhas_one
.