Vererbte Attribute im Vergleich zu grundlegenden Zuweisungen in Rails schreiben

7

Nur neugierig, was der Unterschied zwischen diesen beiden in einem Rails-Juwel ist:

%Vor%

Ich konnte keine gute Dokumentation zu write_inheritable_attribute finden und habe gerade eine Edelsteinquelle durchgelesen und festgestellt, dass die erstgenannte ein paar Mal verwendet wurde. Danke!

    
Kevin Sylvestre 27.11.2010, 23:22
quelle

3 Antworten

5

Für eine einfache Klasse oder ein einfaches Modul gäbe es keinen Unterschied, aber mit komplexeren Modulen, die mit mehreren anderen Modulen geladen werden können, können Methoden wie write_inheritable_attribute Ihnen helfen, Objekte einfach und zuverlässig zu ändern, ohne sich Sorgen machen zu müssen Umfang, private / geschützte Methoden und alle Arten von Interferenzen von Ruby Metaprogrammierung Magie wie method_missing .

Kurz gesagt, wenn Sie foo.sample = "sample" schreiben, gibt es alle möglichen Dinge, die vor, nach oder anstelle des Attributs auftreten können, besonders wenn das Objekt ActiveModel oder ein ORM verwendet. Wenn Sie foo.write_inheritable_attribute(:sample, "sample") verwenden, haben Sie viel mehr Kontrolle darüber, was passiert.

    
bowsersenior 29.11.2010, 09:03
quelle
13

Unterklassen erben keine Instanzvariablen:

%Vor%

In Schienen bieten vererbbare Attribute eine Lösung:

%Vor%     
Joseph Rodriguez 13.12.2010 04:52
quelle
2

Das Attribut "inheritable" wurde hauptsächlich implementiert, um das Problem zu beheben, bei dem die Ruby-Klassenvariable über die Klassenvererbung gemeinsam genutzt wird. Betrachten Sie dieses Beispiel

%Vor%

Dies erzeugt diese Ausgabe

%Vor%

Beachten Sie, dass Rails 3.2 write_inheritable_attribute entfernt wurde. Sehen Ссылка

Mit dem Klassenattribut (was früher ein vererbbares Attribut war) können wir etwas wie folgt implementieren:

%Vor%

Dies erzeugt diese Ausgabe

%Vor%     
Reynard 01.03.2013 06:10
quelle

Tags und Links