Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.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/5/url/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
Ruby on rails 从中的嵌套类调用Ruby模块方法_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 从中的嵌套类调用Ruby模块方法

Ruby on rails 从中的嵌套类调用Ruby模块方法,ruby-on-rails,ruby,Ruby On Rails,Ruby,除了从嵌套类调用模块方法外,还有其他方法吗?守则: module GroupSweeper def expire_cache(paths) paths.each do |path| expire_page(path) end end class SweeperOne < ActionController::Caching::Sweeper include GroupSweeper observe Subject def a

除了从嵌套类调用模块方法外,还有其他方法吗?守则:

module GroupSweeper

  def expire_cache(paths)
    paths.each do |path|
      expire_page(path)
    end
  end

  class SweeperOne < ActionController::Caching::Sweeper
    include GroupSweeper
    observe Subject
    def after_save(subject)
      expire_cache([root_path,subjects_path])
    end
    def after_destroy(subject)
      expire_cache([root_path,subjects_path])
    end 
  end

end
modulegroupsweeper
def缓存(路径)
路径。每个do |路径|
过期页面(路径)
终止
终止
类SweeperOne
如何从SweepOne中调用GroupSweeper的expire\u缓存方法而不明确地包含它


感谢您的支持。

我可能错了,因为我自己对ruby还很陌生,但是这个类可能不应该包含它本身所属的模块


如果你用一个
结尾关闭模块,那么包含它的类应该可以工作。

我可能错了,因为我自己对ruby很陌生,但是类可能不应该包含它本身所属的模块


如果你用一个
结尾关闭模块,包括类中的
应该可以工作。

这里有一些循环依赖关系

  • GroupSweeper定义了一个嵌套类 清扫员
  • 清扫员包括 扫地者
那不行

要回答ruby方法/嵌套类问题,请执行以下操作:

module MyModule
  def my_method
    puts "yo yo yo"
  end

  class MySweetClass
    def sweet_method
      puts "swweeeeeeeeeeeet"
    end
  end
end
如果您想调用MySweetClass的sweet_方法,您将更改为:

module MyModule
  def my_method
    puts "yo yo yo"
    MySweetClass.new.sweet_method
  end

  class MySweetClass
    def sweet_method
      puts "swweeeeeeeeeeeet"
    end
  end
end

#....

class MyClass
  include MyModule
end

MyClass.new.my_method

然而!关于rails的清扫器,我认为你走错了方向。这个答案很有策略性,但我认为您应该提出一个问题,关于您正在尝试对rails清扫器做些什么。

这里有一些循环依赖关系

  • GroupSweeper定义了一个嵌套类 清扫员
  • 清扫员包括 扫地者
那不行

要回答ruby方法/嵌套类问题,请执行以下操作:

module MyModule
  def my_method
    puts "yo yo yo"
  end

  class MySweetClass
    def sweet_method
      puts "swweeeeeeeeeeeet"
    end
  end
end
如果您想调用MySweetClass的sweet_方法,您将更改为:

module MyModule
  def my_method
    puts "yo yo yo"
    MySweetClass.new.sweet_method
  end

  class MySweetClass
    def sweet_method
      puts "swweeeeeeeeeeeet"
    end
  end
end

#....

class MyClass
  include MyModule
end

MyClass.new.my_method

然而!关于rails的清扫器,我认为你走错了方向。这个答案很有策略性,但我认为您应该提出一个问题,关于您在轨道清扫器方面的努力。

谢谢。我最初是想把我所有的清扫工都放在一个文件里。然而,我刚刚了解到清扫者可以观察多个模型——所以我只需要一个。但是。。。如果是
myweetclass
必须调用
my_方法
??。例如,模块中的ruby服务需要从模块中调用共享方法。这些方法与来自同一模块的其他ruby服务共享。我最初是想把我所有的清扫工都放在一个文件里。然而,我刚刚了解到清扫者可以观察多个模型——所以我只需要一个。但是。。。如果是
myweetclass
必须调用
my_方法
??。例如,模块中的ruby服务需要从模块中调用共享方法。这些方法与来自同一模块的其他ruby服务共享