【发布时间】:2013-04-09 13:53:30
【问题描述】:
我正在实现一个包含集合硬编码下拉列表的表单,我想知道最好的解决方案是什么,我知道下面公开的两种方式都可以工作,但我还是做了如下操作:
class Example
# Options for Example.
self.options
[ 'Yes', 'No', 'Not sure' ]
end
end
由Example.options 调用,但我知道也可以执行以下操作:
class Example
# Options for Example.
OPTIONS = [ 'Yes', 'No', 'Not sure' ]
end
将使用Example::OPTIONS 调用。
问题是,这些是好方法还是根本不重要?
【问题讨论】:
-
普遍接受的方法是后者,因为带有 cmets 的大写字母是一种向用户说明这是一个常量的文档形式
-
与可能的答案无关,我建议在字符串上使用符号,除非您的代码特别需要字符串。因此
[:yes, :no, :not_sure] -
@CharlesCaldwell 或更短的
%i[yes no not_sure]。 -
在我看来,这个问题与Constants or class variables in ruby? 有关,它更好地解释了选项背后的心态。常量保存在源代码中定义的常量值,变量保存一个变化的值,一个方法应该做一些事情(除了返回一个硬编码的数组)。
标签: ruby-on-rails ruby