2011-03-23 7 views
3

J'ai deux modèleshas_one belongs_to association AutoSave => true n'épargnent pas

Board 
has_one :pref, :autosave => true, :dependent => :destroy 

Pref 

belongs_to :board 

L'objet pref a par défaut qui sont définies dans la base de données, donc pas d'information doit être utilisée pour créer l'objet lorsque la carte est créé . L'ID du tableau se trouve dans la table pref. Depuis le: autosave => true Je pensais que lorsque je crée et enregistre un nouvel objet Board, un objet pref serait créé et sauvegardé automatiquement.

Cela ne fonctionne pas de cette façon, donc je dois être malentendu.

Existe-t-il un moyen d'enregistrer automatiquement un objet pref lors de la sauvegarde d'une carte?

Nous vous remercions à l'avance

Répondre

3

autosave => true ne devrait pas créer un élément pour vous. Le docs say:

Si cela est vrai, toujours enregistrer l'objet associé ou détruire si à être détruite , lors de l'enregistrement de l'objet parent . Si faux, n'enregistrez jamais ou détruisez l'objet associé.

Vous pouvez utiliser un callback pour créer l'objet pref lorsque vous créez une nouvelle board.

Quelque chose le long des lignes de:

after_create :create_pref 

def create_pref 
    pref.create! 
end 
+0

Merci. Cela l'éclaircit. Je ferai exactement cela. – chell

Questions connexes