Модуль Ruby включает вопрос - PullRequest
0 голосов
/ 27 июня 2010

У меня есть модуль CommonFunctions в папке lib /.У меня есть модель вопросов, которая включает в себя модуль CommonFunctions.Теперь я пытаюсь получить доступ к любимой функции CommonFunctions, такой как Question.favorite.Но я получаю NoMethodError.Я включил код.Может кто-нибудь, пожалуйста, скажите мне, где я делаю ошибку

Ошибка

NoMethodError: undefined method `favorite' for Class:0x00000100e11508

Inside lib / CommonFunctions.rb

module CommonFunctions
  def favorite(object_id)
  end
end

Внутри приложения / модели / Question.rb

require 'lib/CommonFunctions.rb'
class Question
  extend CommonFunctions
end

Я выполняю следующий код из скрипта / консоли

   Question.favorite(1)

Спасибо


Это был дубликат Как правильно включить модуль и вызывать функции модуля из моей модели Rails?

Ответы [ 2 ]

2 голосов
/ 27 июня 2010

Ваш код правильный.Убедитесь, что в консоли загружена текущая версия классов (попробуйте reload!).

В качестве идентификатора: если вы переименуете CommonFunctions.rb в common_functions.rb, он будет загружен railsне нужно требовать.

1 голос
/ 19 августа 2010

Метод модуля является методом экземпляра, если вы хотите, чтобы он был методом класса. Вместо этого используйте код ниже

module CommonFunctions   
  def self.favorite(object_id)   
  end 
end

Использование слова "self" определяет метод как метод класса (или статический)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...