我有一些代码,我需要访问我的模型内部以及我的视图内部如何使助手方法在两个位置都可用?
(虽然认识到这通常是一个反模式,但我有一个特殊的需要数据库存储一些特殊字符串,用于跨表引用特定条目此字符串可能以散文形式出现,我希望将其转换为从视图调用的助手中的实际模型引用,也可能出现在需要在模型中解析它的特殊表查找中。)

最佳答案

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

关于ruby - 如何在模型中使用Sinatra帮助器?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9755938/

10-11 13:11