# Dynamically Naming a Variable

**URL:** <https://www.ruby-forum.com/t/dynamically-naming-a-variable/135790>\
**Category:** Rails\
**Created:** [April 25, 2008, 12:15am UTC](https://www.ruby-forum.com/t/dynamically-naming-a-variable/135790 "2008-04-25T00:15:12Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![sithadmin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/858c86/32.png) [@sithadmin](https://www.ruby-forum.com/u/sithadmin)\
**Post date:** [April 25, 2008, 12:15am UTC](https://www.ruby-forum.com/t/dynamically-naming-a-variable/135790/1 "2008-04-25T00:15:12Z")

</div>

Hello,  
I would like to dynamically name a variable… for example, in my  
program, I iterate over a SQL query that gives me ‘displayname’,  
‘phone\_office’, and ‘phone\_mobile’ (in the actual query there are many  
more columns). For each row in the results, I want to create an array  
with [0]=‘phone\_office’ and [1]=‘phone\_mobile’ and then I would like to  
name the array the ‘displayname’. Is there a way I could do this?

Any help is appreciated!

Thanks!

- Jeff M.

---

<div class="post-metadata">

**Author:** ![sithadmin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/858c86/32.png) [@sithadmin](https://www.ruby-forum.com/u/sithadmin)\
**Post date:** [April 25, 2008, 12:41am UTC](https://www.ruby-forum.com/t/dynamically-naming-a-variable/135790/2 "2008-04-25T00:41:20Z")

</div>

I can’t believe i’m about to post this, but this will work

user = User.find(params[:id])  
arr = eval(“#{@user.user\_name} = []”)  
User.column\_names.each { |name| arr[arr.size] = user[name.to\_sym] }

On Apr 24, 3:15 pm, Jeff M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![sithadmin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/858c86/32.png) [@sithadmin](https://www.ruby-forum.com/u/sithadmin)\
**Post date:** [April 25, 2008, 12:51am UTC](https://www.ruby-forum.com/t/dynamically-naming-a-variable/135790/3 "2008-04-25T00:51:17Z")

</div>

Honestly though I’d urge you to use a hash:

directory = {}  
directory[display\_name] = []  
results = your\_SQL\_query  
results.each {|r| directory[display\_name].push r}

On Apr 24, 3:15 pm, Jeff M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![sithadmin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/858c86/32.png) [@sithadmin](https://www.ruby-forum.com/u/sithadmin)\
**Post date:** [April 25, 2008, 1:27am UTC](https://www.ruby-forum.com/t/dynamically-naming-a-variable/135790/4 "2008-04-25T01:27:26Z")

</div>

thanks for your help, a co-worker of mine just showed me how to use  
hashes. I’m still pretty new to Ruby, so I honestly didn’t even know of  
how powerful a hash can be. It makes a lot more sense to do it that way!

Thanks again,

- Jeff M.
