# Mult dimensional arrays in ruby

**URL:** <https://www.ruby-forum.com/t/mult-dimensional-arrays-in-ruby/153442>\
**Category:** Ruby\
**Created:** [November 17, 2008, 9:53am UTC](https://www.ruby-forum.com/t/mult-dimensional-arrays-in-ruby/153442 "2008-11-17T09:53:29Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![sijo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/da6949/32.png) [@sijo](https://www.ruby-forum.com/u/sijo)\
**Post date:** [November 17, 2008, 9:53am UTC](https://www.ruby-forum.com/t/mult-dimensional-arrays-in-ruby/153442/1 "2008-11-17T09:53:29Z")

</div>

Hi  
What I am trying to do below is I have to enter two rows to the table  
contact\_address\_types like

description(string) default\_item(boolean) enabled(boolean)  
Home f t  
Business f t

Then I tried like

CONTACT\_ADDRESS\_TYPES = [[“Home”,“f”,“t”],[“Business”,“f”,“t”]]  
def self.up  
CONTACT\_ADDRESS\_TYPES.each do |array|  
ContactAddressType.create(:description =\> array[0])  
ContactAddressType.create(:default\_item =\> array[1])  
ContactAddressType.create(:enabled =\> array[2])  
end

end

```
  But this not working Is this the correct way to do this?Please

```

help

Thanks in advance  
Sijo

---

<div class="post-metadata">

**Author:** ![sijo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/da6949/32.png) [@sijo](https://www.ruby-forum.com/u/sijo)\
**Post date:** [November 17, 2008, 4:59pm UTC](https://www.ruby-forum.com/t/mult-dimensional-arrays-in-ruby/153442/2 "2008-11-17T16:59:42Z")

</div>

2008/11/17 Sijo Kg [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> CONTACT\_ADDRESS\_TYPES = [[“Home”,“f”,“t”],[“Business”,“f”,“t”]]  
> def self.up

What is self here?

> CONTACT\_ADDRESS\_TYPES.each do |array|  
> ContactAddressType.create(:description =\> array[0])  
> ContactAddressType.create(:default\_item =\> array[1])  
> ContactAddressType.create(:enabled =\> array[2])  
> end

You need to use #map! instead of #each if you want to change  
CONTACT\_ADDRESS\_TYPES in place. However, I’d think this is bad design  
because you are changing the types of objects in a constant Array. I’d  
rather do it differently (see below):

> end
> 
> ```
> But this not working Is this the correct way to do this?Please
> 
> ```

How about

irb(main):001:0\> ContactAddressType = Struct.new :decription,  
:default\_item, :enabled  
=\> ContactAddressType  
irb(main):002:0\> CONTACT\_ADDRESS\_TYPES = [  
irb(main):003:1\* ContactAddressType.new(“Home”, false, true),  
irb(main):004:1\* ContactAddressType.new(“Business”, false, true),  
irb(main):005:1\* ]  
=\> [#\<struct ContactAddressType decription=“Home”, default\_item=false,  
enabled=true\>, #\<struct ContactAddressType decription=“Business”,  
default\_item=false, enabled=true\>]  
irb(main):006:0\>

?

Cheers

robert

---

<div class="post-metadata">

**Author:** ![sijo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/da6949/32.png) [@sijo](https://www.ruby-forum.com/u/sijo)\
**Post date:** [November 18, 2008, 12:22pm UTC](https://www.ruby-forum.com/t/mult-dimensional-arrays-in-ruby/153442/3 "2008-11-18T12:22:28Z")

</div>

Hi  
Thanks for your reply  
Sijo
