У меня есть проблема, которую я не понимаю и не могу найти решение:
works:
class Document
CONSTANT_ARRAY = [0,1,2,3]
delegate :sum, to: :CONSTANT_ARRAY
end
does not work:
class Document
include Mongoid::Document
CONSTANT_ARRAY = [0,1,2,3]
delegate :sum, to: :CONSTANT_ARRAY
end
Последняя выдает ошибку ArgumentError: неверное количество аргументов (задано 2, ожидается 1)
Следует добавить, что код работал до обновления mongoid, в версии ~> 5.0, rails 4, теперь у меня mongoid 7.1.0, rails 5.2.4.1
Я не уверен, если уместно добавить, что код вызывается из другого класса
class Items
include Mongoid::Document
embeds_many :document_fields, class_name: 'Document', cascade_callbacks: true
end
class Another
include Mongoid::Document
embeds_many :items, class_name: 'Item', cascade_callbacks: true
def document_fields
items.flat_map(&:document_fields)
end
end
Я сократил количество кода в классах, потому что я не вижу релевантности.
ОБНОВЛЕНИЕ: Итак, я понял, что это работает. Но правильный ли это путь?
CONSTANT_ARRAY = [0,1,2,3]
delegate :sum => :CONSTANT_ARRAY
logger.debug Document.new.sum # prints 6 as it is supposed to