¿Cuándo se guardan los objetos de Registro Activo en muchas relaciones?

Estoy usando Rails 1.2.3 (sí, lo sé) y estoy confundido acerca de cómohas_many Trabaja con respecto a la persistencia de objetos.

Por ejemplo, usaré esto como mi declaración:

class User < ActiveRecord::Base
    has_many :assignments
end

class Assignment < ActiveRecord::Base
    belongs_to :user
end

Como yo lo entiendo, esto genera, entre otros, un método.User#assignments.build, lo que crea unAssignment objeto cuyouser_id es la instancia receptoraid (y cuyos otros campos son los especificados en el argumento), pero no guarda este objeto en la base de datos. El objeto se puede guardar más tarde llamandoAssignment#save!.

Sin embargo, los programadores pragmáticosDesarrollo web ágil con rieles, segunda edición, que he estado usando como tutorial y referencia, dice:

Si el objeto principal existe en la base de datos, al agregar un objeto secundario a una colección se guarda automáticamente ese elemento secundario.

Parece que hay una contradicción aquí. Lo que me gustaría saber es:

Si lo hagosome_user.assignments.build, es elAssignment objeto guardado?Si lo hagosome_user.assignments << Assignment.new, es elAssignment objeto guardado?Si lo hagosome_user.assignments << Assignment.create, ¿se hacen dos llamadas a la base de datos, o solo una? ¿Qué pasa si modifico elAssignment objeto entre crearlo y agregarlo asome_user.assignments?Que pasa si yosave! unAssignment objeto cuyo correspondienteUser ¿Todavía no se ha guardado en la base de datos?

PD La razón por la que no solo usoUser#assignments.create porque todo es porque no me permite agrupar la inicialización a un método externo, lo que me gustaría poder hacer. Tampoco quiero hacer varios viajes a la base de datos.

Respuestas a la pregunta(1)

Su respuesta a la pregunta