Как я могу использовать помощников Синатры внутри моей модели? - PullRequest
1 голос
/ 18 марта 2012

У меня есть некоторый код, который мне нужен для доступа как внутри моих моделей, так и внутри моих представлений. Как сделать вспомогательный метод доступным в обоих местах?

(Признавая, что это, как правило, антипаттерн, у меня есть особая необходимость. БД хранит некоторые специальные строки для ссылки на конкретную запись в таблицах. Эта строка может появляться как в прозе, где я хочу преобразовать ее в реальную ссылку на модель в помощнике, вызываемом из представления, а также в специальных таблицах, где мне нужно разрешить ее в модели.)

1 Ответ

3 голосов
/ 18 марта 2012
### helpers/my_helper.rb #################################
module MyHelper
  def resolve(path)
    # …helper code here…
  end
  module_method :resolve   # Allows `MyHelper.resolve`
end
### helpers/init.rb ######################################
require_relative 'my_helper'
MyApp.helpers MyHelper       # Module's methods as helpers
### models/init.rb #######################################
require_relative '../helpers/my_helper' # *vomit*
require_relative 'my_model'
### models/my_model.rb ###################################
class MyModel < Sequel::Model
  def reference
    MyHelper.resolve(the_path)
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...