Rails使用动态选项进行枚举

时间:2014-10-28 09:59:02

标签: ruby-on-rails ruby database dynamic enums

我有一个模型来处理不同的应用程序设置。每个设置都有一个value_type,例如string,integer,boolean和enum。如果将设置定义为枚举,则它具有许多enum_options(仅保存为键,值,并引用数据库中的设置)。 要处理这些枚举,我想使用Enumerize gem。我尝试了很多,但我无法从数据库中设置枚举选项。

以下是我的代码,我尝试定义不同的枚举选项。

enumerize :enum_values, in: -> { EnumOption.where(functional_parameter_id: self.id).map(&:value.to_sym) }

在此之后,我尝试拨打Setting.find(1).enum_values并获得nil

如果我致电Setting.enum_values.values以获取所有可供选择的选项,我就会["#<Proc:0x007fd7e78e9218@/Users/path/to/app/app/models/setting.rb:31 (lambda)>"]

是否可以动态设置枚举选项?

1 个答案:

答案 0 :(得分:1)

我认为你不能在枚举中使用in和lamdba文字。此功能未在任何地方记录,并且看一下https://github.com/brainspec/enumerize/blob/c65867580967724479af1bffbfbea05cbfa62db4/lib/enumerize/attribute.rb#L15,似乎enumerize严格要求您传递数组。