# String as attribute

**URL:** <https://www.ruby-forum.com/t/string-as-attribute/167230>\
**Category:** Rails\
**Created:** [May 5, 2009, 5:53pm UTC](https://www.ruby-forum.com/t/string-as-attribute/167230 "2009-05-05T17:53:26Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![shinkaku](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/4da419/32.png) [@shinkaku](https://www.ruby-forum.com/u/shinkaku)\
**Post date:** [May 5, 2009, 5:53pm UTC](https://www.ruby-forum.com/t/string-as-attribute/167230/1 "2009-05-05T17:53:26Z")

</div>

Hi

I have an object “a\_row” with columns first, last, second

to retrieve the value first I can do a\_row.first but I need to do it a  
different way like this

a\_row.get\_value\_for\_colum(“first”)

and in the object class I would have

def get\_value\_for\_column(attribute)  
return attribute  
end

but clearly i have an error attribute variable or method not defined.

or I was thinking of doing  
self.#{attribute} but big error

\*\*\*\*\* I wanted to know if it is possible to achieve what I would like  
to do  
as the first solution is impossible to do for various reasons

* * *

Thank You

---

<div class="post-metadata">

**Author:** ![shinkaku](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/4da419/32.png) [@shinkaku](https://www.ruby-forum.com/u/shinkaku)\
**Post date:** [May 5, 2009, 6:19pm UTC](https://www.ruby-forum.com/t/string-as-attribute/167230/2 "2009-05-05T18:19:36Z")

</div>

On May 5, 4:53 pm, Anthony W. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> \*\*\*\*\* I wanted to know if it is possible to achieve what I would like  
> to do  
> as the first solution is impossible to do for various reasons
> 
> * * *

well there’s always read\_attribute (and remember that  
foo.read\_attribute(:bar) is the same as foo[:bar] )

Fred

---

<div class="post-metadata">

**Author:** ![shinkaku](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/4da419/32.png) [@shinkaku](https://www.ruby-forum.com/u/shinkaku)\
**Post date:** [May 5, 2009, 6:20pm UTC](https://www.ruby-forum.com/t/string-as-attribute/167230/3 "2009-05-05T18:20:54Z")

</div>

Frederick C. wrote:

> On May 5, 4:53ï¿½pm, Anthony W. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
> wrote:
> 
> > \*\*\*\*\* ï¿½I wanted to know if it is possible to achieve what I would like  
> > to do  
> > ï¿½ ï¿½ ï¿½ ï¿½as the first solution is impossible to do for various reasons
> > 
> > * * *
> 
> well there’s always read\_attribute (and remember that  
> foo.read\_attribute(:bar) is the same as foo[:bar] )
> 
> Fred

Hi,

thank you, just discovered read\_attribute a few minutes ago!!

again thank you

---

<div class="post-metadata">

**Author:** ![shinkaku](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/4da419/32.png) [@shinkaku](https://www.ruby-forum.com/u/shinkaku)\
**Post date:** [May 6, 2009, 12:04am UTC](https://www.ruby-forum.com/t/string-as-attribute/167230/4 "2009-05-06T00:04:56Z")

</div>

I think rather than doing read\_attribute, you should do

def get\_value\_for\_column(attribute)  
send(attribute)  
end

because if you have

def something  
read\_attribute(:first) + read\_attribute(:second)  
end

then get\_value\_for\_column(“something”) would not work in case of  
read\_attribute in get\_value\_for\_column

-Arpit J.

---

<div class="post-metadata">

**Author:** ![shinkaku](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/4da419/32.png) [@shinkaku](https://www.ruby-forum.com/u/shinkaku)\
**Post date:** [May 6, 2009, 12:24am UTC](https://www.ruby-forum.com/t/string-as-attribute/167230/5 "2009-05-06T00:24:48Z")

</div>

On 5 May 2009, at 15:04, arpit [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> I think rather than doing read\_attribute, you should do
> 
> def get\_value\_for\_column(attribute)  
> send(attribute)  
> end

Sort of depends what problem you are trying to use (eg send won’t work  
if you had a legacy schema with a column name that isn’t a legal name  
for a ruby method).

Fred

---

<div class="post-metadata">

**Author:** ![shinkaku](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/4da419/32.png) [@shinkaku](https://www.ruby-forum.com/u/shinkaku)\
**Post date:** [May 6, 2009, 12:30am UTC](https://www.ruby-forum.com/t/string-as-attribute/167230/6 "2009-05-06T00:30:04Z")

</div>

yeah you are right. Thanks for clarifying 🙂

Frederick C. wrote:

> Sort of depends what problem you are trying to use (eg send won’t work  
> if you had a legacy schema with a column name that isn’t a legal name  
> for a ruby method).

s/isn’t/is
