Я хочу получить доступ к владельцу ассоциации elements
в следующем коде внутри модуля Processor
.Сначала вызывается Chapter.process
:
app / models / chapter.rb
class Chapter
include Mongoid::Document
field :position, :type => Integer
field :title, :type => String
field :identifier, :type => String
embedded_in :book
embeds_many :elements
def self.process!(git, file)
chapter = new
# Parsing of XML goes here, generating parsed_doc
elements = parsed_doc.css("div.chapter > *")
elements.each { |element| chapter.elements.process!(element) }
end
Затем он передается коду внутри Processor
, которыйфактически включается в класс Element
следующим образом:
app / models / element.rb
class Element
include Mongoid::Document
extend Processor
field :tag, :type => String
field :identifier, :type => String
field :title, :type => String
embedded_in :chapter
end
Где класс Processor
определяется следующим образом:
module Processor
def process!(markup)
[ASSOCIATION OWNER GOES HERE].elements.send("process_#{markup.name}!", markup)
end
Причина, по которой мне это нужно, заключается в том, что я попытался просто вызвать send
сам по себе, но Monogid настаивает на том, чтобы:
Доступ к коллекции для элемента неразрешено, так как это встроенный документ, пожалуйста, получите доступ к коллекции из корневого документа.
И поэтому единственный способ сделать это - получить доступ к родительскому объекту для этой ассоциации.Я знаю, что должен быть _parent
метод для экземпляров документа, но в этом случае этот метод вызывается для collection , а не для экземпляра.
Так как я могуссылаться на объект ассоциации из этого process!
метода?