Yaml dump of db to be used for creating records

I have an array of Hash to be used for creating records in db with
this format :

geo_areas.first
=> {“id”=>1, “areaOrder”=>1, “areaName”=>“Europe”, “areaCode”=>“EUR”,
“areaEnabled”=>1}

I’ll loop over the geo_areas array to create all records … but I need
to use the ‘id’ key as the :id of my records upon creation

doing :
GeoArea.new(geo_areas.first) doesn’t take the “id” in account
=> #<GeoArea id: nil, areaOrder: 1, areaName: “Europe”, areaCode:
“EUR”, areaEnabled: true>

and
GeoArea.create(geo_areas.first) auto-generate the id , not taking in
account the “id” in the Hash …

how should I proceed ?

tfyi

On Fri, Apr 22, 2011 at 9:26 PM, Erwin [email protected] wrote:

doing :
GeoArea.new(geo_areas.first) doesn’t take the “id” in account
=> #<GeoArea id: nil, areaOrder: 1, areaName: “Europe”, areaCode:
“EUR”, areaEnabled: true>

You might want to look at the Fixtures class.

I don’t know where I got this seeding script before but it uses fixtures
to create the records. http://pastie.org/1822406

“Ruby on Rails: 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/rubyonrails-talk?hl=en.

Thanks Jim

I am using a specific seed.rb script to seed the database from
scratch , as it clean the tables it’s not so important, the id auto-
generated in sequence.
If the table is not empty (let’s assume 12 records) , then the first
hash will have the id : 13 despite the fact that there is an “id” key
in the hash … I should take off the auto-generation of the id

On Apr 22, 2:26pm, Erwin [email protected] wrote:

doing :
GeoArea.new(geo_areas.first) doesn’t take the “id” in account
=> #<GeoArea id: nil, areaOrder: 1, areaName: “Europe”, areaCode:
“EUR”, areaEnabled: true>

and
GeoArea.create(geo_areas.first) auto-generate the id , not taking in
account the “id” in the Hash …

I think the id attribute might be protected by default. Try area =
GeoArea.new(…); area.id = …; area.save

Fred

Maybe this is a bug (or undocumented feature) in YAML.

I have a similar problem in Rails (but ActiveRecord is not involved in
this workflow):

I YAML.dump a Hash that contains attributes
that I want to pass to a MyModel#new method. But when I YAML.load the
resulting yaml, the key :id is not in the Hash anymore! I tried to
reproduce this behavior with a simpler Hash, but i wasn’t able to.

My current workaround is to rename the key “:id” to “:_id” before
dumping and rename it back after loading…

Ephraim

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