Wenn Sie ein neues Modell erstellen, können Sie die Methoden aus einer vorhandenen Klasse erben.
Beispiel (app/Modelle/mykindofstring.rb):
class Mykindofstring < String
def all_caps_and_reverse
self.upcase.reverse
end
end
dann von der Steuerung:
@my_string = Mykindofstring.new('This is my string')
und schließlich aus der Sicht Aufruf:
<%= @my_string %>
Displays as Dies ist meine Zeichenfolge, während:
<%= @my_string.all_caps_and_reverse %>
zeigt als GNIRTS YM SI SIHT.
Die Klasse erbt von der String-Klasse, sodass alle Methoden, die auf eine Zeichenfolge angewendet werden, auch für ein mykindofstring-Objekt gelten. Die darin enthaltene Methode ist nur ein neuer Name für eine Kombination aus zwei vorhandenen Zeichenfolgenmethoden. Sie können jedoch festlegen, dass sie das tut, was Sie möchten, z. B. eine Methode zum Konvertieren einer Zeit in eine formatierte Zeichenfolge.
Im Grunde ist es nur eine aktuelle Ruby-Klasse mit Ihren eigenen Methoden statt Funktionen/Helfer erweitern.
Haupt bearbeitet
Basierend auf Ians Kommentar zu dieser Antwort und seine eigenen Antwort auf die obige Frage, spielte ich ein wenig herum in Rails und kam mit dem Hinzufügen dies die application_helper.rb up:
module ApplicationHelper
String.class_eval do
def all_caps_and_reverse
self.upcase.reverse
end
end
end
Nun rufen Sie einfach die Methode auf eine beliebige Zeichenfolge in der App:
@string = 'This is a string.'
@string.all_caps_and_reverse
einen si Siht .gnirts
Warum ist das wichtig? Vielleicht würde etwas Kontext helfen ... – runako
Ich finde nur ihre vorhandene Syntax lästig und hässlich. Es wäre auch schön, Dinge wie @ post.truncate in meinem Modell zu nennen (zum Beispiel Caching) –