Метод модели не распознается при вызове

Я использую 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 уже была определена в его папке. Итак, я добавил метод там, и он работал.

Другие вопросы по тегам