Aktualisieren - Bitte beachten Sie den Kommentar unten, der auf eine true explanation of protected
/private
in Ruby verweist. Das war ein tiefsitzendes Vorurteil, das tatsächlich von meinen Java-Tagen übriggeblieben war. Der einzige wichtige Teil meiner Antwort ist, dass Controller-Methoden, die keine Aktionen sind, nicht public
sein sollten (oder zumindest sollten Ihre Routen sie schützen).
Die Vererbung einzelner Tabellen ist ein perfektes Beispiel dafür, wenn protected
in der Modellstufe hilfreich ist, da es eine der häufigsten Vererbungsanwendungen ist.
Im Controller Tier, definiert Hilfsmethoden auf ApplicationController
sollte als protected
markiert werden - wenn sie private
die anderen Steuerungen waren nicht in der Lage wäre, auf sie zuzugreifen, aber wenn sie public
Rails behandeln sie als Aktionen sind.
Persönlich finde ich, dass ich die Klassenvererbung mehr als viele meiner Freunde und Kollegen, auch in Rails-Anwendungen verwenden. Weil ich es oft benutze (und aus meinen Java-Tagen komme), favorisiere ich protected
für alle Hilfsmethoden, um jedem (normalerweise mir), der die Klasse erweitern möchte, Freiheit zu geben - es sei denn, ich schäme mich wirklich wirklich Ich markiere es private
. :)
Das macht sehr viel Sinn. (Nicht sicher, was STI ist). –
"Hilfsmethoden, die auf ApplicationController definiert sind, sollten als geschützt markiert werden - wenn sie privat wären, könnten die anderen Controller nicht darauf zugreifen" - fyi, das ist falsch. Siehe Beispiel hier: http://pastie.org/842898. Geschützt/privat in Ruby geht es um 'Selbst' und Empfänger, nicht um Vererbung. "Beachten Sie, dass im Gegensatz zu Sprachen wie Java die Vererbung absolut keine Rolle bei der Bestimmung der Methodensichtbarkeit in Ruby spielt." - http://weblog.jamisbuck.org/2007/2/23/method-visibility-in-ruby –
Danke, Jordanien. Du hast recht. Ich habe eine kleine Notiz hinzugefügt. –