如何在模型中使用Sinatra助手?

时间:2012-03-18 04:12:31

标签: ruby sinatra

我有一些代码,我需要访问我的模型内部以及我的视图内部。如何在两个位置都提供辅助方法?

(虽然认识到这通常是反模式,但我有一个特殊的需要。数据库存储一些特殊的字符串,用于引用跨表的特定条目。这个字符串可能出现在散文中 - 我要转换它在从视图调用的帮助器中以及在特殊表查找中的实际模型引用中 - 我需要在模型中解析它。)

1 个答案:

答案 0 :(得分:3)

### 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