我有多个类(4-5)使用相同的常量值,比如PI = 3.14。 在Ruby和RoR应用程序中在一个地方定义该常量的最佳方法是什么?
我是否使用给定的Constant构造一个模块并包含在使用它的所有类中?
什么是最佳实践和标准Ruby或RoR方式?
答案 0 :(得分:6)
不是在任何地方都包含这个常量,你可以在一个地方定义它,然后直接引用它
# config/initializers/constants.rb, for example.
module Constants
PI = 3.1415926535897932384626433832795028841971
end
# app/models/circle.rb
class Circle
attr_reader :radius
def area
Constants::PI * radius ** 2
end
end
答案 1 :(得分:2)
所有应用程序类都应位于命名空间下,给定MyApp
。
所以所有共享常量都可以在MyApp
模块中声明:
module MyApp
APP_CONST_1 = 42
APP_CONST_2 = 3.14
# ...
end
class MyApp::User
def the_answer
MyApp::APP_CONST_1 # 42
end
end
答案 2 :(得分:1)
开始使用问题,RubyOnRails有这个漂亮的模式来重构代码。
看看这个: