【发布时间】:2018-01-07 21:09:44
【问题描述】:
例如,我在 ruby-on-rails 中有这个枚举:
class Foo < ActiveRecord::Base
enum color: [ :red, :green, :blue ]
end
默认情况下,索引应该是:red -> 0, :green -> 1,依此类推。
我想通过索引获取枚举值,比如说从索引1,所以结果应该是:green。可以这样做吗?
更新:
伪代码示例:
Foo.colors.find_by_index(1) # returns :green
【问题讨论】:
-
为什么不定义一个数组而不是枚举?
-
如果你有两列有枚举怎么办?在这种情况下,您希望 Rails 如何工作?
-
向我发送一些示例代码,包括您的预期输出。
-
我还将枚举用于 Formtastic 的选择输入(例如
f.input :color, as: :select, collection: Foo.colors)。枚举索引将是选项值,枚举值本身作为显示文本/标签。我认为数组不适合这种情况。另一种方法是使用哈希,但在这里我想知道是否可以通过索引获取枚举值。 -
好吧,你可以这样做,因为
Foo.colors.keys(1) #=> "green"因为colors只是一个HashWithIndifferentAccess,所以它的行为与Hash非常相似,但所有Symbol键都将是@987654331 @.
标签: ruby-on-rails ruby enums