Si j'ai deux modèles: et p> si je fais: p> L'utilisateur est-ce que l'utilisateur est épargné et la touche principale correctement attribuée dans post code> 's
user_id code> champ? p> p> p>
3 Réponses :
activeRecord appartences_to code> Les associations ont la possibilité d'être autosvées avec le modèle parent, mais la fonctionnalité est désactivée par défaut. Pour l'activer:
class Post < ActiveRecord::Base
belongs_to :user, :autosave => true
end
Bizarre. J'ai tourné ce drapeau, et fais la même chose que ci-dessus me donne toujours > post.Errors # => #
En fait, la fonctionnalité est sur b> par défaut. Vous devez la définir sur FALSE afin de l'éteindre, sinon toutes les associations seront sauvegardées automatiquement.
@ODEEODUM: Ce n'est pas vrai, j'ai eu un problème comme celui-ci et définir une autosave: true dans les rails 3 corrigé le problème.
@ Fire-Dragon-Dol, en réalité, il s'agit du comportement par défaut. Selon la documentation Autosavecord :: AutosaveeSSExSocation lorsque: L'option Autosave n'est pas présente, de nouvelles associations sont enregistrées.
MHHH, j'ai besoin de vérifier, parce que j'ai essayé sans elle et ça ne fonctionnait pas. Lorsque j'ai ajouté l'option d'autosave, cela a commencé à fonctionner bien et que je n'ai rien changé d'autre.
Du Docs ActiveCord: Notez que AutoSave: Faux n'est pas identique à ne pas déclarer: autosave. Lorsque l'option: autosave n'est pas présente, les nouveaux enregistrements d'association sont enregistrés, mais les enregistrements d'association mis à jour ne sont pas enregistrés. Code>
Je pense que vous voulez:
class User < ActiveRecord::Base has_many :posts, :autosave => true end
the appartient à la documentation de l'API (Rails 4.2.1): p>
: autosave code> p>
Si true, enregistrez toujours l'objet associé ou détruisez-le s'il est marqué pour la destruction, lors de la sauvegarde de l'objet parent. P>
si faux, jamais enregistrez ou détruisez l'objet associé. P>
Par défaut, enregistrez uniquement le objet si c'est un nouvel enregistrement. P>
Notez que accepte_nedes_attributes_for Ensems: autosave à true. p> blockQuote>
Dans votre case de cas est un nouvel enregistrement, il sera donc automatiquement enregistré. P>
La dernière phrase sur
accepte_netés_attributes_for code> est également manquée par beaucoup. p>