Não consegui encontrar nenhuma documentação sobre o método .build no Rails (atualmente estou usando o 2.0.2).
Por meio da experimentação, parece que você pode usar o método de construção para adicionar um registro a um has_many
relacionamento antes que qualquer registro seja salvo.
Por exemplo:
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
Isso salvará o cão e a etiqueta com as chaves estrangeiras corretamente. Isso não parece funcionar em um belongs_to
relacionamento.
d = Dog.new
d.person.build # => nil object on nil.build
Eu também tentei
d = Dog.new
d.person = Person.new
d.save # => true
A chave estrangeira Dog
não está definida neste caso devido ao fato de que, no momento em que é salva, a nova pessoa não possui um ID porque ainda não foi salva.
Minhas perguntas são:
Como a construção funciona para que o Rails seja inteligente o suficiente para descobrir como salvar os registros na ordem certa?
Como posso fazer a mesma coisa em um
belongs_to
relacionamento?Onde posso encontrar alguma documentação sobre esse método?
Obrigado
belongs_to
" e "Métodos adicionados porhas_one
" . Mais documentação técnica pode ser encontrada nos documentos da API:belongs_to
ehas_one
.