NameError:类

时间:2018-01-25 14:33:32

标签: ruby-on-rails ruby mongodb mongoid6 mongodb-3.6

当我创建类的实例时,会引发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

1 个答案:

答案 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方法。也许这就是原因。