Brent1
(Brent)
1
OK I give up, how do I do this...
I have a DB that stores dynamic variables with I group into
group_id's. For instance here are a couple examples of db rows:
title="name", description = "john", grouping_id = "1"
title="location", description = "USA", grouping_id = "1"
title="comment", description = "hello", grouping_id = "1"
title="name", description = "frank", grouping_id = "2"
title="location", description = "CA", grouping_id = "2"
title="comment", description = "hi", grouping_id = "2"
Sure I could create a DB with these columns, but for various reasons
I'm doing it this way.
SO, how do I store all this information in a hash? I want end up
looking something like this:
@vars = {:1 => { :name =>
"john", :location=>"USA", :comment=>"hello"}, :2=>{ :name =>
"frank", :location=>"CA", :comment=>"hi"} }
I tried this:
@vars = Hash.new { Hash.new }
Mymodel.all.each do |a|
@vars["#{a.grouping_id}"] = { :"#{a.title}" =>
a.description }
end
But that only stores the last variable in each grouping ID
h = {}
model.each do |r|
h[r.grouping_id] ||= {}
h[r.grouping_id][:name] = r.name
h[r.grouping_id][:description] = r.description
end
Brent1
(Brent)
3
Ahh beautiful.. part of your code didn't work with the || = but I did
this:
@vars = {}
Model.all.each do |a|
if @vars[a.grouping_id] == nil
@vars[a.grouping_id] = {}
end
@vars[a.grouping_id][:"#{a.title}"] = a.description
end
11155
(-- --)
4
Brent wrote:
OK I give up, how do I do this...
I have a DB that stores dynamic variables with I group into
group_id's. For instance here are a couple examples of db rows:
title="name", description = "john", grouping_id = "1"
title="location", description = "USA", grouping_id = "1"
title="comment", description = "hello", grouping_id = "1"
title="name", description = "frank", grouping_id = "2"
title="location", description = "CA", grouping_id = "2"
title="comment", description = "hi", grouping_id = "2"
Sure I could create a DB with these columns, but for various reasons
I'm doing it this way.
And those various reasons are...? In general, it's best to use a
database for your data store.
SO, how do I store all this information in a hash? I want end up
looking something like this:
@vars = {:1 => { :name =>
"john", :location=>"USA", :comment=>"hello"}, :2=>{ :name =>
"frank", :location=>"CA", :comment=>"hi"} }
I tried this:
@vars = Hash.new { Hash.new }
Mymodel.all.each do |a|
@vars["#{a.grouping_id}"] = { :"#{a.title}" =>
a.description }
end
But that only stores the last variable in each grouping ID
You probably want an array of hashes, not a hash of hashes.
Best,