Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.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中的过滤器_Ruby - Fatal编程技术网

ruby中的过滤器

ruby中的过滤器,ruby,Ruby,如何用ruby制作过滤器?我知道这个函数已经存在于rails中,但是我们如何在ruby程序中编写它呢?节目如下: module Filter def before_filter *args end def after_filter *args end end class Ingredient def one puts "in one" end def two puts "in two" end def three

如何用ruby制作过滤器?我知道这个函数已经存在于rails中,但是我们如何在ruby程序中编写它呢?节目如下:

module Filter
  def before_filter *args   
  end
  def after_filter *args  
  end 
end  

class Ingredient  
  def one
    puts "in one"
  end

  def two
    puts "in two"
  end

  def three
    puts "in three"
  end

  def four
    puts "in four"
  end

  extend Filter

  before_filter :one, :two 
  after_filter :four
end

dish1 = Ingredient.new 
dish1.three

Rails可以避免这种情况,因为它们可以控制调用方法的方式。但是在这里,你直接从外面呼叫三

为了符合您提出的约束条件,任何这样做的代码都将是非常奇怪的。此外,后过滤器的作用是什么?它确定返回值吗

我已经实现了类似的东西,虽然有一个稍微不同的界面,它保存了一些奇怪的东西,但仍然很糟糕


此外,还有一个显而易见的问题,那就是为什么你会需要这样的东西。

你想知道它是如何在Rails控制器中实现的,还是仅仅完成一些事情?如果是后者,你能提供一个更有意义的例子,或者更准确地描述你想做什么?过滤器在控制器中是有意义的(在过滤器可以停止请求之前),但在配料中这意味着什么?@Joshuacheck:他们显然在去掉标记:当我们调用实例方法时..befor:filter中的所有方法都将首先执行,然后执行我们调用的函数,,,之后,应执行在after_筛选器中写入的函数。