2010-02-09 3 views

Antwort

16

ActiveRecord belongs_to Zuordnungen können mit dem übergeordneten Modell automatisch gespeichert werden, die Funktionalität ist jedoch standardmäßig deaktiviert. Um sie zu aktivieren:

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

Seltsam. Ich habe diese Flagge eingeschaltet und mache das selbe wie oben, gibt mir aber 'post.errors # => # [" kann nicht leer sein "]}>' und 'user.new_record? # => wahr '. Fehle ich etwas? – hsribei

+4

Eigentlich ist die Funktionalität standardmäßig ** on **. Sie müssen es auf false setzen, um es auszuschalten, sonst werden alle Assoziationen automatisch gespeichert. –

+0

@OdeeOdum: Das ist nicht wahr, ich hatte ein Problem wie folgt und Einstellung Autosave: True in Schienen 3 behoben das Problem. –

7

Ich glaube, Sie wollen:

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

Mit anderen Worten, wenn ein Benutzer Datensatz zu speichern, suchen alle Datensätze auf der anderen Seite des Vereins ‚Stellen‘ und speichern Sie sie .

0

Die belongs_to API documentation sagt (Rails 4.2.1):

:autosave

Wenn das stimmt, immer das dazugehörige Objekt speichern oder zerstören, wenn für die Zerstörung markiert, wenn das übergeordnete Objekt zu speichern.

Wenn falsch, speichern oder zerstören Sie nie das zugehörige Objekt.

Speichern Sie standardmäßig nur das zugehörige Objekt , wenn es sich um einen neuen Datensatz handelt.

Beachten Sie, dass accessed_nested_attributes_for-Sets: automatisch auf True gespeichert wird.

In Ihrem Fall Benutzer ist neuer Datensatz, so wird es automatisch gespeichert.

Der letzte Satz über accepts_nested_attributes_for wird auch von vielen vermisst.

Verwandte Themen