Ich habe Modell Artikel, zum Beispiel. Artikel has_one Artikelinhalt. ArticleContent verfügt standardmäßig über eine Validierung aller Attribute. Aber ich brauche zusätzliche Funktionalität - um Entwurf Artikel ohne Validierung zu speichern. Also passiere ich: draft => false als einen Parameter in Article.new(), als nächstes mache ich @ article.build_article_content(). Es gibt einige nicht funktionierende Code in ArticleContent:ActiveRecord Validierung durch Elternattribut
def draft?
raise self.article.draft
end
validates_presence_of :header, :message => "We have no fuckin' header!", :unless => :draft?
Natürlich ist es nicht funktionieren. Zum Zeitpunkt des Entwurfs? Ausführung Es gibt kein passendes Artikelobjekt irgendwo, also gibt self.article nil zurück. Netter Versuch, Codemonkey ...
Jeder hat einige süße Ideen? Ich denke, @ content.save zu machen! ist nicht eine sehr gute Idee
UPDATE
ich so versucht: das
def draft
self[:draft]
end
def draft=(value)
self[:draft] = value
end
def draft?
self[:draft]
end
validates_presence_of :field1, :message => "msg1", :unless => :draft?
validates_presence_of :field2, :message => "msg2", :unless => :draft?
validates_presence_of :field3, :message => "msg3", :unless => :draft?
Es funktioniert, aber wie kann ich Gruppe?
unless self.draft?
validates_presence_of :field1, :message => "msg1"
validates_presence_of :field2, :message => "msg2"
validates_presence_of :field3, :message => "msg3"
end
Sagt dieser Entwurf? Methode wurde nicht gefunden. Ich soll auch
@article.content.draft = @article.draft
tun, und es sieht aus wie schmutzig-dirty Hack zu
Entschuldigung, ich habe gerade erst Ihr Update gesehen. – noodl