Question

J'ai un modèle de mission qui has_many tâche, et le Groupe belongs_to Mission

Pour plus de sécurité, je l'ai fait cette validation sur le modèle de travail:

  validates_presence_of :mission_id
  validates_numericality_of :mission_id

Mais le problème est que lorsque créer une mission et ajouter des tâches comme ceci:

 @mission.tasks.build

La validation renvoie une erreur, car l'ID de mission sur la tâche est nulle (la mission n'a pas encore été créée)

Si je supprime la validation, la mission et la tâche est créé avec succès, mais comment puis-je conserver la validation et encore ce travail? Je pourrais faire un rappel après la sauvegarde, mais je ne pense pas que ce soit juste, parce que je ne veux pas enregistrer les tâches sans mission_id.

P.S. Je suis hidding mon champ de mission sur le formulaire. Si je l'ai visible, il montrera la mission currect et tout est ok. Mais si je HIDDE il l'erreur se produit.

<%=  f.hidden_field :mission, :label => "Missão" %>

La forme reseting les attributs donnés par le contrôleur sur la nouvelle action?

Était-ce utile?

La solution

Utilisation suivante dans Mission.rb

has_many :tasks
validates_associated :task

Task.rb

belongs_to :mission

dans le contrôleur

@mission=Mission.new(params[:mission])  
task= @mission.tasks.build(params[:task]) ###this is same as Task.new(:mission_id=>@mission.id)

if @mission.save #this will save only when mission as well as task are valids, also it will automatically assign mission_id to tasks table you have nothing to worry about it<br>
else
    #your error code will be here.......
end

Ref: - http://api.rubyonrails.org/classes/ ActiveRecord / Validations / ClassMethods.html

Autres conseils

Lors de la validation d'un attribut imbriqué, vous devez faire la validation suivante:

 validates_associated   :mission
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top