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!
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.
Unterklassen erben keine Instanzvariablen:
%Vor%In Schienen bieten vererbbare Attribute eine Lösung:
%Vor%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%Tags und Links ruby ruby-on-rails