Метод модели не распознается при вызове
Я использую ruby на рельсах 2.3.2, а также использую puglin act_as_taggable_on. Это дало мне две таблицы базы данных: теги и теги.
Поскольку мне больше ничего от этого не требовалось, я, например, не создавал модель Tag. Теперь проект более зрелый, мне нужно создать несколько методов для тегов, поэтому я создал модель тегов с некоторыми методами.
Модель выглядит примерно так:
class Tag < ActiveRecord::Base
def self.get_parent
parent = Tag.find(self.parent_id)
return parent
end
end
Когда я вызываю его из контроллера, он не находит метод. Это код:
tag = Tag.find(tag_id)
the_parent = tag.get_parent
Это выдаст ошибку, говорящую:
undefined method `get_parent' for #<Tag id: 13, name: "Historia", parent_id: 12>
Я не знаю что не так. Любая помощь будет оценена.
2 ответа
Вы определяете get_parent как ClassMethod и вызываете его как метод экземпляра
def get_parent
...
end
Я решил это. Проблема заключалась в том, что, поскольку я использую плагин act_as_taggable_on, модель Tag уже была определена в его папке. Итак, я добавил метод там, и он работал.