Also die einfachste Lösung, auf die ich dann selber gekommen bin,
ist ein before_validation:
class Container < ActiveRecord::Base
acts_as_tree :order=>:position
validates_presence_of :name
validates_presence_of :myValue
before_validation do |record|
record.myValue = "Child of #{record.parent.name}" unless
record.parent == nil
end
end
was myValuet immer dann überschreibt, wenn ein parent vorhanden ist:
Das hat dazu den Vorteil, dass es die normale Validierung nicht
aushebelt - wenn also irgendwer versucht, einen Container ohne parent
*und* ohne myValue anzulegen, wird das nach wie vor richtig validiert
und abgelehnt.
Grüße
stefan
Am 26.07.2007 um 16:48 schrieb Stefan Frank:
Hi,
ich habe einen active_record, der mit einem acts_as_tree
ausgezeichnet ist: Ich möchte jetzt beim parent.children.create
default-werte für das neue child setzen, aber irgendwie weiß ich
gar nicht recht, wie ich das formulieren soll - kann ich einfach
das children.create überschreiben, etwa so:
class Container < ActiveRecord::Base
acts_as_tree :order=>:position
def children.create (attributes ={})
super ( attributes.merge ({:myValue =>"Child of #{self.name}"} )
end
end
Die Syntax ist sicher etwas konfus(gibt ein method_missing): Ich
will eigentlich nur beim create einige von der parent-klasse
abgeleitete Attribute mit in das Child mischen - kann mir da
jemand weiterhelfen?!
Viele Grüße
Stefan_______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug
_______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug