rails应用程序设计:静态方法

时间:2012-05-13 20:09:10

标签: ruby-on-rails ruby ruby-on-rails-3

哪种方法可以定义静态方法,例如“generate_random_string”,“generate_random_user_agent”,这些方法是从不同的库中调用的?

最佳做法是什么?

1 个答案:

答案 0 :(得分:2)

我见过的最佳做法包括:

  • 将它们放入module /lib/
  • module App::Services def generate_random_string # ... end def generate_random_user_agent # ... end end
  • mixins 包含在其余的应用程序代码中。
  • 确保使用自己的rspec(或您使用的任何测试工具)对它们进行全面测试

计划它们,好像您可能在某些时候想要将它们分离到自己的宝石中,或者可能在某些时候将它们作为服务提供。这并不意味着从一开始就将它们设计为单独的服务,但肯定确保它们不依赖于应用程序中的任何其他代码。

一些基本代码可能类似于:

class MyModelClass < ActiveRecord::Base
  include App::Services

  def do_something_here
    foo = random_string
    # whatever...
  end

  def random_string
    generate_random_string
  end

end

然后在您的模型或控制器代码(或任何地方)中,您可以像这样包含它们:

generate_random_string

注意我在自己的方法中隔离了{{1}}调用,因此它可以在模型类中使用,但可能很容易被切换为其他方法。 (这可能比你想要的更多。)