我正在尝试在我的rails应用程序的lib目录中创建一个类,其中的方法都在类上调用。在每种方法之前,我想运行一些对所有方法都通用的代码。我环顾四周,找到了几种方法,但它们似乎只与实例方法有关而不是类方法。
我的课看起来有点像这样:
class Push
def self.user_checked_in(user, trip)
...
end
... Other methods ...
end
我想要的是拥有像
这样的东西before_filter :method
就像控制器一样。什么是最好的方法,或者是否可以简单地包含来自控制器的负责代码?
答案 0 :(得分:0)
我不喜欢用不必要的方法弄乱我的控制器。在你的情况下,我认为最干净的方法是使用装饰器。 This post涵盖了Ruby中的一些装饰器,非常受欢迎。我个人喜欢this decorator gem。然后你的方法看起来像这样:
class Push
+MyDecorator
def self.user_checked_in(user, trip)
...
end
end
如果你想为每一个方法做这个,你可以自己覆盖method_added
,但除非你有很多方法,否则我建议去装饰器:它更明显,并且编写方法更容易你不希望那些代码调用的地方。