Попытка реализовать Модуль, используя пространства имен - PullRequest
1 голос
/ 08 февраля 2011

Я использую Ruby on Rails 3 и пытаюсь реализовать Модуль с использованием пространств имен.

В моей папке lib/ у меня есть файл authorization.rb, в котором:

module Authorizations
  def Authorizations.message
    return "flash_message"
  end
end

В моем контроллере у меня есть:

class Users::AccountsController < ApplicationController # 'Users' is the namespace
  include Authorizations

  def create
    ...
    flash.now[:notice] =  Authorizations.message
  end
end

Когда я запускаю метод create, я получаю эту ошибку:

NoMethodError (undefined method 'message' for Authorizations:Module)

Что не так?


В выражении модуля я также попробовал эти

def Authorizations::message
 ...

# or 

def message
  ...

а также те, которые не работают.

Ответы [ 2 ]

2 голосов
/ 08 февраля 2011

Проблема в RAILS_ROOT/config/application.rb.Просто загрузите папку lib/ следующим образом:

config.autoload_paths += %W(#{config.root}/lib)
1 голос
/ 08 февраля 2011
module Authorizations
  def message
    return "flash_message"
  end
end

А потом

Authorizations::message

или, если входит в класс, просто

... = message
...