2012-09-07 60 views
-1

如何在红宝石过滤器?我知道这个函数已经存在于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 
+2

你想了解它是如何在Rails控制器中实现的或者只是完成某些工作?如果是后者,你能提供一个更有意义的例子,或者描述你想要做更准确的事情吗?过滤器在控制器中是有意义的(before_filter可以暂停请求),但这在成分中意味着什么? –

+1

@JoshuaCheek:他们显然摆脱了这个标签:http://meta.stackexchange.com/questions/147100/trogdor-ate-my-homework-tag –

回答

1

Rails可以逃脱这一点,因为他们控制如何调用方法。但是在这里,你直接从外面打三个电话。

为了适应您所提出的约束条件,任何代码都将完全变得怪异。另外,后过滤器是做什么的?它确定返回值吗?

我已经实现了类似的东西,虽然它的界面略有不同,但它保存了一些怪诞,但仍然很糟糕。 https://gist.github.com/3450271

此外,还有一个明显的问题,为什么你会需要这样的事情。

+0

当我们调用一个实例方法..所有的方法befor:过滤器首先执行,然后执行我们调用的函数,之后执行after_filter中写入的函数。 – user1654001