On Wed, Apr 20, 2011 at 6:25 PM, Jeremy Evans <[email protected]> wrote:
> On Apr 20, 4:45 am, Christian MICHON <[email protected]>
> wrote:
>> Hi sequel-experts,
>>
>> I've been using xml serialization out (to_xml) recently following
>> documentation found 
>> athttp://sequel.rubyforge.org/rdoc-plugins/classes/Sequel/Plugins/XmlSe....
>>
>> 1 small issue found is that top markers are changed to lower-case, ie
>> Album will become <album>. I can take care of post-processing this
>> using nokogiri and renaming the markers on the fly.
>
> Yes.  That is by design (it calls underscore), though I'm open to
> making it configurable so that it it does not.

around which line of code is this in ? I had trouble understanding
where this was done...

>
>> What I've difficulty with is serializing back inside the db
>> model/table (array_from_xml). Indeed, the following line seems to be
>> like Album.all:
>> Album.array_from_xml(Album.to_xml)
>
> It is similar.  Not that Album.all does not save into the db, it pulls
> data out of the db.  Album.array_from_xml(some_xml) pulls data out of
> the xml.  The main difference is that Album.all returns records that
> are not new (save will do an update), while the records returned by
> Album.array_from_xml(some_xml) are new (save will do an insert).
>
>> But data does not get saved in this way. I'm actually looking at this
>> to be able to seed my db using xml files.
>
> That's by design.  If you want to save the files, you'll have to loop
> over the contents of the array.
>
>> Is there a way to save in the db using array_from_xml ? I'm looking
>> for a 1-liner solution if possible.
>
>  Album.array_from_xml(some_xml).each{|x| x.save}

I actually tried that... Then realized the primary key was exported.

I tried again just now.

I did this: some_xml = Album.to_xml(:except => :id) and it worked!

>
> Note that the following will not work:
>
>  Album.array_from_xml(Album.to_xml).each{|x| x.save}
>
> because you'll get a duplicate primary key violation on the insert. :)
>

Exactly. This was my blocking point.

Thanks again Jeremy!

-- 
Christian

-- 
You received this message because you are subscribed to the Google Groups 
"sequel-talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sequel-talk?hl=en.

Reply via email to