J'ai un modèle de phrase et de correction avec une relation has_one et belongs_to respectivement.Rails - Pourquoi ma validation personnalisée est-elle déclenchée uniquement pour une commande de construction?
Pour une raison quelconque quand je fais
def create
@sentence = Sentence.find(params[:sentence_id])
@correction = @sentence.build_correction(params[:correction])
une validation personnalisée que j'ai écrit pour la correction est appelée au point de build_correction. la validation est inférieure
class Correction < ActiveRecord::Base
attr_accessible :text, :sentence_id, :user_id
belongs_to :sentence
belongs_to :user
validate :correction_is_different_than_sentence
def correction_is_different_than_sentence
errors.add(:text, "can't be the same as the original sentence.") if (text == self.sentence.text)
end
le problème est pour une raison quelconque sur la validation de l'objet de correction n'a pas l'ensemble identifiant la phrase (malgré je la méthode build_correction) et il se plaint « vous avez objet nul .. .. lors de l'exécution de nil.text "dans la clause if de la validation ci-dessus. Donc, ma question est pourquoi la validation se produit pour une commande de construction, je pensais que cela se déclenche seulement sur une création ou une mise à jour. Et pourquoi le phrase_id n'est-il pas défini?
Je pense que cela fonctionnera si vous commentez "attr_accessible: text,: phrase_id,: user_id" – Salil
merci pour la réponse. Malheureusement, cela n'a rien changé – robodisco