0

当我创建类的实例时,会引发错误 NameError: undefined method 'options' for class 'Product'。

数据库:MongoDB 3.6

Class Product
     include Mongoid::Document
     include Mongoid::Timestamps
     include Mongoid::Attributes::Dynamic

     field :options, type: Hash, default: {}
end

宝石:mongoid(6.1.1)

注意:当我将字段名称更改为option或其他任何内容时效果很好,只有选项失败。TIA

4

1 回答 1

2

取自这里

保留名称

如果您在文档中定义的字段与 Mongoid 中的保留方法名称冲突,则配置将引发错误。对于这些列表,您可以查看 Mongoid. destroy_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方法的模块。也许这就是原因。

于 2018-01-25T15:00:06.277 回答