1

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

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

class Push

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

    ... Other methods ...

end

我想要的是有类似的东西

before_filter :method

就像在控制器中一样。最好的方法是什么,或者是否可以简单地包含来自控制器的负责代码?

4

1 回答 1

0

我不喜欢用不必要的方法弄乱我的控制器。在你的情况下,我认为最干净的方法是使用装饰器。这篇文章涵盖了 Ruby 中的一些装饰器,并且非常受欢迎。我个人喜欢这个装饰宝石。然后您的方法将如下所示:

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

如果你想为每一个方法都这样做,你可以重写method_added自己,但我建议你使用装饰器,除非你有很多方法:它更明显,并且在你不想要的地方编写方法更容易。的代码调用。

于 2013-07-29T06:06:13.243 回答