У меня есть класс ActiveRecord, который использует acts_as_tree. Я пытаюсь обновить метод to_xml, чтобы при вызове to_xml дочерней записи он возвращал ее в XML-код, вложенный в XML-файл parent / ancestor, чтобы указать полный путь к этому ресурсу. В качестве примера у меня есть компилятор, который является родителем компилятора / версии. Компилятор должен быть представлен как xml:
В то время как компилятор / версия должны отображаться как
Я пытался сделать это, передавая флаг full_qualified, но он умирает с помощью 'Builder :: XmlMarkup # to_ary должен вернуть массив'
def to_xml (options = {}, & block)
параметры [: полностью_квалифицированный] || = true
параметры [: отступ] || = 2
options [: builder] || = Builder :: XmlMarkup.new (: indent => options [: indent])
if options[:fully_qualified] and not parent.nil?
55: parent.to_xml (параметры) do | foo |
lative_options = options.dup
lative_options [: полностью_qualfied] = ложь
lative_options [: skip_instruct] = true
relative_options.delete (: строитель)
foo << to_xml(relative_options)
end
else
xml = options[:builder]
xml.instruct! unless options[:skip_instruct]
66: xml.parameter (: name => name, & block)
конец
конец
Метод отлично работает в случае с Compiler, но не работает для Compiler / Version:
/ usr / lib / ruby / 1.8 / builder / xmlbase.rb: 133: в method_missing'
/usr/lib/ruby/1.8/builder/xmlbase.rb:133:in
call '
/usr/lib/ruby/1.8/builder/xmlbase.rb:133:in _nested_structures'
/usr/lib/ruby/1.8/builder/xmlbase.rb:57:in
method_missing '
app / models / parameter.rb: 66: в to_xml'
app/models/parameter.rb:55:in
to_xml '