我有一个模型来处理不同的应用程序设置。每个设置都有一个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)>"]
是否可以动态设置枚举选项?
答案 0 :(得分:1)
我认为你不能在枚举中使用in
和lamdba文字。此功能未在任何地方记录,并且看一下https://github.com/brainspec/enumerize/blob/c65867580967724479af1bffbfbea05cbfa62db4/lib/enumerize/attribute.rb#L15,似乎enumerize严格要求您传递数组。