Ein Beispiel für den Rails-Controller, der eine private Methode definiert:
%Vor% Dann wird es in einer Unterklasse von ApplicationController
verwendet:
Wie ist es möglich, dass eine private Methode aus ihrer Unterklasse aufgerufen wird? Was bedeutet private
in Ruby?
Was private
in Ruby tut, ist anders als in anderen Sprachen, dass Methoden nicht mit expliziten Empfänger aufgerufen werden können.
Aka, Sie können some_variable.some_private_method
oder gar self.some_private_method
nicht aufrufen.
Das ist alles. Sie werden immer noch vererbt. Sie können mehr hier lesen.
Die Unterklasse erbt alle Methoden und Attribute von der Oberklasse, einschließlich ihrer privaten Methoden. Sie rufen tatsächlich die private Methode auf, die zur Unterklasse gehört.
Was Sie nicht tun konnten, ist authorization_method außerhalb von ApplicationController (oder Unterklassen des Authorization Controllers) aufzurufen. Versuchen Sie dies in der Konsole:
%Vor% Wie Daniel in erwähnt hat, kann seine Antwort private Methode "nicht mit einem expliziten Empfänger aufgerufen werden". Mit anderen Worten, Sie können keine private Methode mit der Punktnotation aufrufen. Dies unterscheidet sich von Java, wo Sie this.privateMethod()
aufrufen können. In Ruby self.private_method
schlägt fehl, aber Sie können es stattdessen als private_method
bezeichnen.
Aber es gibt eine weitere Möglichkeit, private Methoden von any -Objekten aufzurufen, die Rails intern zum Aufrufen von Vorher / Nachher-Aktionen verwendet.
Wenn Sie eine Instanz obj
mit privatem private_method
haben, können Sie die Methode folgendermaßen aufrufen:
Realität ist, dass es in Ruby im strengen Sinne keine privaten Methoden gibt. Datenschutz ist "nur Empfehlung, nicht die Regel".
Tags und Links ruby ruby-on-rails oop