[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

multi-dimentional array

Joan Gu

3/25/2008 2:48:00 PM

I need to insert Broad Category value and Topics value into a table,
doing something like this (where 'Police, Crime, Drugs' are topics
values and 'Crime & Law Enforcement' is broad category value):

obj1 = 'Police, Crime, Drugs'
obj1 = obj1.split(',').map do |tag_name|
execute "insert into tags (name,counter) values
('#{tag_name.strip.downcase}', 0)"
t = Tag.find_by_name(tag_name.strip.downcase)
tt = t.tag_with('Crime & Law Enforcement')
end

When it comes with multiple broad categories and topics, I want to build
an array in a form like
[['Police, Crime, Drugs','Crime & Law Enforcement'],['Fire, Emergency
Services','Emergency Management'], ['Schools, Colleges,
Libraries','Education'],...]
to iterate the executions. I worked for quite some hours, but still
can't make it work. Can someone help?

Joan
--
Posted via http://www.ruby-....

5 Answers

David A. Black

3/25/2008 3:22:00 PM

0

Hi --

On Tue, 25 Mar 2008, Joan Gu wrote:

> I need to insert Broad Category value and Topics value into a table,
> doing something like this (where 'Police, Crime, Drugs' are topics
> values and 'Crime & Law Enforcement' is broad category value):
>
> obj1 = 'Police, Crime, Drugs'
> obj1 = obj1.split(',').map do |tag_name|
> execute "insert into tags (name,counter) values
> ('#{tag_name.strip.downcase}', 0)"
> t = Tag.find_by_name(tag_name.strip.downcase)
> tt = t.tag_with('Crime & Law Enforcement')
> end
>
> When it comes with multiple broad categories and topics, I want to build
> an array in a form like
> [['Police, Crime, Drugs','Crime & Law Enforcement'],['Fire, Emergency
> Services','Emergency Management'], ['Schools, Colleges,
> Libraries','Education'],...]
> to iterate the executions. I worked for quite some hours, but still
> can't make it work. Can someone help?

I think you want something like this:

tagsets = [['Police, Crime, Drugs','Crime & Law Enforcement'],
['Fire, Emergency Services','Emergency Management'],
['Schools, Colleges, Libraries','Education']]

tagsets.each do |tagset|
broad, topic = tagset
broads = broad.split(",").map {|s| s.strip }
puts "Broad: #{broads.join("; ")}\n\tTopic: #{topic}" # etc.
end


David

--
Rails training from David A. Black and Ruby Power and Light:
ADVANCING WITH RAILS April 14-17 New York City
INTRO TO RAILS June 9-12 Berlin
ADVANCING WITH RAILS June 16-19 Berlin
See http://www.r... for details and updates!

Paul Mckibbin

3/25/2008 3:57:00 PM

0

Joan Gu wrote:
> I need to insert Broad Category value and Topics value into a table,
> doing something like this (where 'Police, Crime, Drugs' are topics
> values and 'Crime & Law Enforcement' is broad category value):

How about using a hash with arrays underneath?

Something like:


category_hash={}
cat1 = 'Crime & Law Enforcement'
cat2 = 'Emergency Management'
obj1 = 'Police, Crime, Drugs'
obj2 = 'Fire, Emergency Services'

category_hash[cat1]= obj1.split(",").map {|s| s.strip}
category_hash[cat2]= obj2.split(",").map {|s| s.strip}

You can then add new items like this:

category_hash[cat1] << 'New Crime related item'

puts category_hash.inspect
#=>{"Emergency Management"=>["Fire", "Emergency Services"], "Crime & Law
Enforcement"=>["Police", "Crime", "Drugs", "New Crime related item"]}

and you can then iterate through categories and within each category
through the items.

Mac
--
Posted via http://www.ruby-....

Joan Gu

3/25/2008 4:47:00 PM

0

To Mac,

Your solution sounds like a good approach, but may not fit in my
situation, since I am actually writing Rails migration file, which is
more like a 'one time deal'. :)

Thanks for your help.
Joan
--
Posted via http://www.ruby-....

Todd Benson

3/25/2008 5:24:00 PM

0

On Tue, Mar 25, 2008 at 9:48 AM, Joan Gu <joan2kus@gmail.com> wrote:
> I need to insert Broad Category value and Topics value into a table,
> doing something like this (where 'Police, Crime, Drugs' are topics
> values and 'Crime & Law Enforcement' is broad category value):
>
> obj1 = 'Police, Crime, Drugs'
> obj1 = obj1.split(',').map do |tag_name|
> execute "insert into tags (name,counter) values
> ('#{tag_name.strip.downcase}', 0)"
> t = Tag.find_by_name(tag_name.strip.downcase)
> tt = t.tag_with('Crime & Law Enforcement')
> end
>
> When it comes with multiple broad categories and topics, I want to build
> an array in a form like
> [['Police, Crime, Drugs','Crime & Law Enforcement'],['Fire, Emergency
> Services','Emergency Management'], ['Schools, Colleges,
> Libraries','Education'],...]
> to iterate the executions. I worked for quite some hours, but still
> can't make it work. Can someone help?
>
> Joan

Can't help you with migrations, but what's your relationship model?
Is it one to one and that's why you want an array like that? Is it
one many (which is what I'd suspect)? Is it many to many?

You did say "a" table. Somehow, that doesn't seem to correctly fit your model.

Todd

Paul Mckibbin

3/27/2008 11:45:00 PM

0

> Can't help you with migrations, but what's your relationship model?
> Is it one to one and that's why you want an array like that? Is it
> one many (which is what I'd suspect)? Is it many to many?
>
> You did say "a" table. Somehow, that doesn't seem to correctly fit your
> model.
>
> Todd
Seems to me that could even be n-n, since a category like "Police
Academy" could fit into two topics. :)

Mac
--
Posted via http://www.ruby-....