Ich studiere die Rails-Dokumentation. Im associations documentation geben sie Methodendefinitionen mit einer Kette auf sie, wie folgt aus:Definieren einer verketteten Rubin-Methode Definition ähnlich wie Schienen
Project#portfolio.nil?
Das schien mir seltsam. Es scheint, dass es eine Instanz-Methodendefinition gibt, die eine verkettete Methode enthält. Zum Beispiel: Es scheint, dass Project#portfolio.nil?
würde eine Instanz Methode definieren, würde wie folgt aussehen:
class Project < ActiveRecord::Base
def portfolio.nil?
...
end
end
Ich habe wie noch nie zuvor definierten Instanzmethoden gesehen: Wo eine Kette innerhalb der eigentlichen Instanzmethode Definition angegeben ist. Ich habe versucht, es mit reinem Rubin zu replizieren und ich konnte es nicht zur Arbeit bringen.
class Dog
def speak
puts "woof woof"
end
def speak.fetch
puts "go get the ball!"
end
end
Dies funktioniert jedoch nicht. Es gibt eine NameError
NameError: undefined local variable or method `speak' for Dog:Class
Wenn es funktioniert hat: dann würde ich Dog.new.speak.fetch
versuchen. Ich bin mir nicht sicher, was es zurückgeben würde. Vielleicht wäre es zurück:
=> woof woof!
=> go get the ball!
Frage: Ist es sogar möglich, irgendwie Beispiel Methodendefinitionen mit Ketten auf sie wie folgt zu definieren? Wenn nicht: Wie machen Schienen das? Am Beispiel von Project#portfolio.nil?
: Wie definiert Rails #portfolio.nil?
?
Ja, das ist die richtige Antwort. –