2010-02-09 12 views

Respuesta

16

Las asociaciones de ActiveRecord belongs_to tienen la capacidad de guardarse automáticamente junto con el modelo principal, pero la funcionalidad está desactivada de forma predeterminada. Para activarlo:

class Post < ActiveRecord::Base 
    belongs_to :user, :autosave => true 
end 
+2

Weird. Encendí esa bandera, y haciendo lo mismo que antes aún me da '> post.errors # => # [" no puede estar en blanco "]}>' y 'user.new_record? # => verdadero'. ¿Me estoy perdiendo de algo? – hsribei

+4

En realidad, la funcionalidad es ** en ** por defecto. Debe configurarlo en falso para desactivarlo, de lo contrario, todas las asociaciones se guardarán automáticamente. –

+0

@OdeeOdum: Eso no es cierto, tuve un problema como este y establecí el guardado automático: true in rails 3 solucionó el problema. –

7

Creo que desee:

class User < ActiveRecord::Base 
    has_many :posts, :autosave => true 
end 

En otras palabras, cuando se guarda un registro de usuario, buscar todos los registros en el otro lado de la asociación de 'mensajes' y guardarlos .

0

El belongs_to API documentation dice rieles (4.2.1):

:autosave

Si es verdad, siempre guardar el objeto asociado o destruirlo si se ha marcado para su destrucción, al guardar el objeto padre.

Si es falso, nunca guarde o destruya el objeto asociado.

De forma predeterminada, solo guarde el objeto asociado si es un registro nuevo.

Tenga en cuenta que accepts_nested_attributes_for sets: autosave a true.

En su caso, el usuario es un nuevo registro, por lo que se guardará automáticamente.

La última frase acerca de accepts_nested_attributes_for también es extrañada por muchos.

Cuestiones relacionadas