当我创建类的实例时,会引发Error。NameError:类'Product'的未定义方法'options'。
DB:MongoDB 3.6
Class Product
include Mongoid::Document
include Mongoid::Timestamps
include Mongoid::Attributes::Dynamic
field :options, type: Hash, default: {}
end
gem:mongoid(6.1.1)
注意:当我将字段名称更改为option
或其他任何内容时,它都可以正常工作,只有选项失败。 TIA
答案 0 :(得分:2)
取自here:
保留名称
如果您在文档中定义与保留字段冲突的字段 Mongoid中的方法名称,配置会引发错误。为一个 你可以看一下Mongoid.destructive_fields。
来自mongoid的一些代码:
# File 'lib/mongoid/config.rb', line 69
def destructive_fields
Composable.prohibited_methods
end
# File 'lib/mongoid/composable.rb', line 98
def prohibited_methods
@prohibited_methods ||= MODULES.flat_map do |mod|
mod.instance_methods.map(&:to_sym)
end
end
MODULES
常量至少包含Fields
模块,用于定义options
方法。也许这就是原因。