NameError: неопределенный метод 'options' для класса

Когда я создаю экземпляр класса, возникает ошибка NameError: неопределенный метод 'options' для класса 'Product'.

БД: MongoDB 3.6

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

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

драгоценный камень: монгоид (6.1.1)

ПРИМЕЧАНИЕ. Хорошо работает, когда я изменяю имя поля на option или что-нибудь еще, только параметры Fails. ТИА

1 ответ

Взяты отсюда:

Зарезервированные имена

Если вы определите в документе поле, которое конфликтует с зарезервированным именем метода в 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 метод. Может быть, это причина.

Другие вопросы по тегам