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
метод. Может быть, это причина.