I'll be interested to see what responses you get, but I can't think of a more 
efficient way.  I'd try something like:

my_file.each_line do |line|
  if line ~= /$User/ and this_user.username.length > 0 then
    if this_user.save then
      puts("Saved user #{this_user.username}")
    else
      puts("Problem saving #{this_user.username}!:\n#{this_user.errors}")
    end
    this_user = User.new
  end
  attribute, val = line.split(/:\s*/)
  this_user.send(attribute.lower, val)
end

That's air-code obviously--may be wildly off...

-----Original Message-----
From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of 
Jisho
Sent: Thursday, September 11, 2008 10:50 AM
To: Ruby on Rails: Talk
Subject: [Rails] Beginner Question: Formatted Text Data -> Hash -> Database.


I have a text document that has formatted data in it, and I am attempted to 
determine the best way to parse the data to break it up into hashes that I can 
then write to my databases. I suppose my issue is determining where to tell 
Ruby to STOP reading in data to write into the database. The file would be 
similar to this:

User:  Username
Phone: Phone number
Address:  Address
Comments: Comments
Data1: Data
Data2: Data
Data3: Data
User:  Username
Phone: Phone number
Address:  Address
Comments: Comments
Data1: Data
Data2: Data
User:  Username
Phone: Phone number
Address:  Address
Comments: Comments
Data1: Data
Data2: Data

It's not that difficult to chomp the \n and use a split to create a hash in a 
loop, but how do tell Ruby to start a new database write process if it hits a 
new "user" key value? Should I write a case statement to check each line for a 
"user" key and use that line to call a new instance of my database 
class/method? Is there a faster or more efficient way?



--~--~---------~--~----~------------~-------~--~----~
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 [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
-~----------~----~----~----~------~----~------~--~---

Reply via email to