Rob, Thanks much for the good response.
To answer your question about the data type, it's "date" in Oracle. When I use the default to_xml() (without suppressing types and the dasherizer) it looks like this: <error-date type=\"ActiveRecord::ConnectionAdapters::OracleColumn \">Wed Nov 12 00:00:00 -0600 2008</error-date> In fact, every element is listed as "OracleColumn". I did try the following to control my date presentation: proc = Proc.new {|options| options[:builder].tag! ('error_date_x', options[:object].error_date.strftime("%Y-%m-%d"))} s = errs.to_xml(:dasherize => false, :skip_types => true, :procs => [proc]) That just blows up. NoMethodError: You have a nil object when you didn't expect it! The error occurred while evaluating nil.error_date What's really odd is I've been using the default to_xml() for months and receiving "YYYY-MM-DD" as my format. Now suddenly I'm getting a different format. Perhaps I updated gems and got something new... So now, if I cannot simply control the formatting of that one column, I'll do my own to_xml() (following your example). On Jan 9, 11:20 am, Rob Biedenharn <r...@agileconsultingllc.com> wrote: > On Jan 9, 2009, at 11:42 AM, michael_teter wrote: > > > > > Since all my efforts to control how to_xml() is formatting dates has > > failed, I'm now considering writing my own to_xml(). However, from > > the limited examples I've found, I just don't understand how to > > actually reference the columns for the records in my record set. > > > Here's a simplified view of my ActiveRecord object: > > > class Errors < ActiveRecord::Base > > set_table_name "legacy_errors" > > > # legacy_errors has three columns: id, msg, error_date > > # Since the default to_xml is generating error_dates in the format > > "Mon Nov 03 00:00:00 -0600 2008", > > # and I cannot seem to force a different behavior, I want to > > create my own to_xml. > > > # Examples online show the following as how to override to_xml: > > def to_xml(options = {}) > > options[:indent] ||= 2 > > xml = options[:builder] ||= Builder::XmlMarkup.new(:indent => > > options[:indent]) > > xml.instruct! unless options[:skip_instruct] > > # v v v > > xml.level_one do > > xml.tag!(:second_level, 'content') > > end > > # ^ ^ ^ > > end > > end > > > The code between the v and ^ markers is where the body of each XML > > object is generated. If I were generating by hand, I would do > > something like this: > > errors.each do |err| > > s << "<id>" << err.id << "</id>" > > s << "<msg>" << err.msg << "</msg>" > > s << "<error_date>" << err.error_date.strftime("%Y-%m-%d") << "</ > > error_date>" > > end > > > I'm not at all understanding how to do my thing within the v ^ section > > of to_xml(). > > > Any help is appreciated! > > > Thanks. > > that should be the encoding of a single Errors instance. > > xml.error do |x| > x.id(self.id) > x.msg(self.msg) > x.error_date(self.error_date.strftime('%Y-%m-%d')) > end > > I think that you'd get a bunch of errors with: > > Errors.find(:all, :conditions => [...]).to_xml(:root => 'errors') > > By default, I get output of attributes like this: > <created-at type="datetime">2009-01-09T02:58:31Z</created-at> > <id type="integer">110</id> > <reference>From Anne</reference> > When I do #to_xml. Notice the date format for the type="datetime". > What is the actual class of error_date? Is it a Date or a DateTime or > a Time? > > -Rob > > Rob Biedenharn http://agileconsultingllc.com > r...@agileconsultingllc.com --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk@googlegroups.com To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---