Die Methode des Modells wird beim Aufruf nicht erkannt
-
19-09-2019 - |
Frage
Ich verwende Ruby on Rails 2.3.2 und auch das Act_as_taggable_on Puglin.Das hat mir zwei Datenbanktabellen generiert:Tags und Taggings.
Da ich davon nichts mehr brauchte, habe ich beispielsweise kein Tag-Modell erstellt.Jetzt ist das Projekt ausgereifter, ich muss einige Methoden für Tags erstellen, also habe ich ein Tag-Modell mit einigen Methoden darin erstellt.
Das Modell sieht in etwa so aus:
class Tag < ActiveRecord::Base
def self.get_parent
parent = Tag.find(self.parent_id)
return parent
end
end
Wenn ich es von einem Controller aus aufrufe, wird die Methode nicht gefunden.Das ist der Code:
tag = Tag.find(tag_id)
the_parent = tag.get_parent
Dadurch wird eine Fehlermeldung ausgegeben, die besagt:
undefined method `get_parent' for #<Tag id: 13, name: "Historia", parent_id: 12>
Ich weiss nicht, was falsch ist.Jede Hilfe wird geschätzt.
Lösung
Sie definieren get_parent wie eine ClassMethod und rufen es wie eine Instanzmethode auf
def get_parent
...
end
Andere Tipps
Ich habe es gelöst.Das Problem bestand darin, dass das Tag-Modell bereits in seinem Ordner definiert war, da ich das Plugin „acts_as_taggable_on“ verwende.Also habe ich die Methode dort hinzugefügt und es hat funktioniert.