Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RubyonRails在类实例中扩展模块_Ruby_Ruby On Rails 4_Module - Fatal编程技术网

RubyonRails在类实例中扩展模块

RubyonRails在类实例中扩展模块,ruby,ruby-on-rails-4,module,Ruby,Ruby On Rails 4,Module,使用ruby 2.2、rails 4.1 我有一个搜索结果类,我想使用它来根据搜索类型(如全文、关键字等)设置正确结果的格式。目前,我在结果类中为不同的搜索类型设置了单独的模块,每个模块都知道如何设置自己的结果的格式。我想做的是将原始结果和类型传递到search result initialize方法,并在该方法中动态扩展正确的模块。然后实例化搜索结果类的类(本例中为resultbuilder)调用模块中定义的方法来格式化结果。这需要作为实例方法调用,每个模块中都定义了相同的方法,因此无论搜索类

使用ruby 2.2、rails 4.1

我有一个搜索结果类,我想使用它来根据搜索类型(如全文、关键字等)设置正确结果的格式。目前,我在结果类中为不同的搜索类型设置了单独的模块,每个模块都知道如何设置自己的结果的格式。我想做的是将原始结果和类型传递到search result initialize方法,并在该方法中动态扩展正确的模块。然后实例化搜索结果类的类(本例中为resultbuilder)调用模块中定义的方法来格式化结果。这需要作为实例方法调用,每个模块中都定义了相同的方法,因此无论搜索类型如何,resultbuilder都只调用一个方法

大概是这样的:

Class SR
   def initialize(data, type)
      @data = data
      extend type.constantize
   end

   module FullText
      def call
         <format results>
      end
   end
end
SR类
def初始化(数据,类型)
@数据=数据
扩展type.constantize
结束
模块全文
def呼叫
结束
结束
结束
我可以让扩展工作,但我认为我缺少了一些东西,因为调用方法在SR类实例上不可用

是否有其他方法来设置模块?是否必须将它们放入自己的文件中?我不希望设置可以与通用调用和结果方法一起动态使用的模块,从而将细节排除在resultbuilder之外