哪种方法可以定义静态方法,例如“generate_random_string”,“generate_random_user_agent”,这些方法是从不同的库中调用的?
最佳做法是什么?
答案 0 :(得分:2)
我见过的最佳做法包括:
module
/lib/
module App::Services
def generate_random_string
# ...
end
def generate_random_user_agent
# ...
end
end
计划它们,好像您可能在某些时候想要将它们分离到自己的宝石中,或者可能在某些时候将它们作为服务提供。这并不意味着从一开始就将它们设计为单独的服务,但肯定确保它们不依赖于应用程序中的任何其他代码。
一些基本代码可能类似于:
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}}调用,因此它可以在模型类中使用,但可能很容易被切换为其他方法。 (这可能比你想要的更多。)