Overriding to_xml() - Why Does This Work?

In Chapter 5 of his book, Flexible Rails, Peter A.'s leads his
readers through an exercise to override the behavior of to_xml() in
ActiveRecord objects so that :dasherize would be false by default. I
found his solution inelegant. I came up with a more elegant one, and
it seems to work.

All I did was add the following to the very end of myapp/config/
environment.rb:

class ActiveRecord::Base
def to_xml(options=nil, &block)
super options == nil ? { :dasherize => false } :
options.merge(:dasherize => false), &block
end
end

But, I don’t know why it works. Specifically, how come I can invoke
“super” even though I am not subclassing ActiveRecord::Base, and
ActiveRecord::Base’s parent class (whom I believe is Object) doesn’t
implement to_xml()?

Can someone who is more enlightened about Ruby/Rails help me out?

Thanks!

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs