我尝试仅在我的应用中使用:符号作为关键词。我尝试严格决定:symbol => logic或string => UI /语言特定
但我得到一些"价值观" (也就是选项等等)每个JSON也是如此,因为在JSON中没有:符号,所有我调用的哈希都有" with_indifferent_access"属性。
但是:数组有相同之处吗?像那样
a=['std','elliptic', :cubic].with_indifferent_access
a.include? :std => true
?
编辑:为标签添加了导轨
答案 0 :(得分:2)
a = ['std','elliptic', :cubic].map(&:to_sym)
a.include? :std
#=> true
编辑 - 关于maxigs的评论可能更好地转换为字符串:
a = ['std', 'elliptic', :cubic].map(&:to_s)
a.include? "std"
#=> true
答案 1 :(得分:0)
TL;博士
['std','elliptic', :cubic].flat_map { |s| [s.to_sym, s.to_s] }
很多次使用Rails,我将对数组中的包含进行验证。我也喜欢使用符号。它可能看起来像这样:
validates :source, inclusion: { in: [:source1, :source2] }
当我第一次使用符号创建对象时,这可能是有效的,但是当它从db读取source
并返回一个字符串时变为无效。我可以通过猴子修补吸气剂总是返回符号,但我宁愿不回答。相反,我做:
validates :source, inclusion: { in: [:source1, :source2].flat_map { |s| [s, s.to_s] } }