2013-07-29 48 views
1

我想在我的rails应用程序的lib目录中创建一个类,其中的方法都是在类上调用的。在每个这些方法之前,我想运行一些对所有这些方法都通用的代码。我环顾四周,找到了一些方法,但它们似乎只与实例方法相关,而不是类方法。before_filter喜欢在lib类中的功能

我的类看起来有点像这样:

class Push 

    def self.user_checked_in(user, trip) 
     ... 
    end 

    ... Other methods ... 

end 

我想是有东西像

before_filter :method 

就像在控制器。什么是最好的方法呢,还是可以简单地包含来自控制器的负责任的代码?

+0

检查一下,是否满足您的需求? http://stackoverflow.com/questions/15034125/implement-a-rails-before-filter-in-ruby-without-rails –

回答

0

我不喜欢用不必要的方法混淆我的控制器。就你而言,我认为最简洁的方法是使用装饰器。 This post涵盖了Ruby中的一些装饰器,并且非常受欢迎。我个人喜欢this decorator gem。然后你的方法应该是这样的:

class Push 
    +MyDecorator 
    def self.user_checked_in(user, trip) 
     ... 
    end 
end 

如果你想为每个单独的方法做到这一点,你可以自己重写method_added,但我建议用装饰去,除非你有很多的方法:它更显而易见,在不需要调用代码的位置编写方法会更容易。

+0

完美地工作。不错的宝石:)我确实有一些方法可以使用它,但'method_added'技术感觉有点冒险,创建一个别名。现在我想用这个,谢谢:) – PaReeOhNos