Делегат выдает ошибку для mongoid документа - PullRequest
0 голосов
/ 13 марта 2020

У меня есть проблема, которую я не понимаю и не могу найти решение:

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

1 Ответ

0 голосов
/ 14 марта 2020

Это проблема в Mongoid 7.1.0: https://jira.mongodb.org/browse/MONGOID-4849

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...