# How to access a method when method-name is in a variable

**URL:** <https://www.ruby-forum.com/t/how-to-access-a-method-when-method-name-is-in-a-variable/127290>\
**Category:** Ruby\
**Created:** [January 27, 2008, 9:37pm UTC](https://www.ruby-forum.com/t/how-to-access-a-method-when-method-name-is-in-a-variable/127290 "2008-01-27T21:37:51Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![jeanluca](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/74df32/32.png) [@jeanluca](https://www.ruby-forum.com/u/jeanluca)\
**Post date:** [January 27, 2008, 9:37pm UTC](https://www.ruby-forum.com/t/how-to-access-a-method-when-method-name-is-in-a-variable/127290/1 "2008-01-27T21:37:51Z")

</div>

Hi All

I have a method name stored in a variable. How do I now invoke the  
method ?

my\_var = ‘some\_method’  
my\_obj = Some\_Obj.new

my\_obj.my\_var()

doesn’t work

Any suggestion

thnx a lot  
LuCa

---

<div class="post-metadata">

**Author:** ![jeanluca](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/74df32/32.png) [@jeanluca](https://www.ruby-forum.com/u/jeanluca)\
**Post date:** [January 27, 2008, 9:42pm UTC](https://www.ruby-forum.com/t/how-to-access-a-method-when-method-name-is-in-a-variable/127290/2 "2008-01-27T21:42:50Z")

</div>

Alle Sunday 27 January 2008, Luca S. ha scritto:

> doesn’t work
> 
> Any suggestion
> 
> thnx a lot  
> LuCa

my\_object.send( my\_var)

Stefano

---

<div class="post-metadata">

**Author:** ![jeanluca](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/74df32/32.png) [@jeanluca](https://www.ruby-forum.com/u/jeanluca)\
**Post date:** [January 27, 2008, 9:47pm UTC](https://www.ruby-forum.com/t/how-to-access-a-method-when-method-name-is-in-a-variable/127290/3 "2008-01-27T21:47:25Z")

</div>

thats it, thnx!!

---

<div class="post-metadata">

**Author:** ![jeanluca](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/74df32/32.png) [@jeanluca](https://www.ruby-forum.com/u/jeanluca)\
**Post date:** [February 3, 2008, 1:13pm UTC](https://www.ruby-forum.com/t/how-to-access-a-method-when-method-name-is-in-a-variable/127290/4 "2008-02-03T13:13:57Z")

</div>

An other question, is it possible to assign a value to an attribute this  
way

For example, this doesn’t work

my\_object.send(my\_var) = 2000

thnx in advance  
LuCa

Stefano C. wrote:

> Alle Sunday 27 January 2008, Luca S. ha scritto:
> 
> > doesn’t work
> > 
> > Any suggestion
> > 
> > thnx a lot  
> > LuCa
> 
> my\_object.send( my\_var)
> 
> Stefano

---

<div class="post-metadata">

**Author:** ![jeanluca](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/74df32/32.png) [@jeanluca](https://www.ruby-forum.com/u/jeanluca)\
**Post date:** [February 3, 2008, 1:19pm UTC](https://www.ruby-forum.com/t/how-to-access-a-method-when-method-name-is-in-a-variable/127290/5 "2008-02-03T13:19:45Z")

</div>

Alle Sunday 03 February 2008, Luca S. ha scritto:

> Stefano C. wrote:
> 
> > Stefano  
> > Yes, you can. You must understand that, when you do:

my\_object.my\_var= 2000

you’re actually calling the my\_var= method of my\_object with argument  
2000.  
Therefore, to do this with send, you need to do:

my\_object.send(:my\_var=, 2000)

Stefano

---

<div class="post-metadata">

**Author:** ![jeanluca](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/74df32/32.png) [@jeanluca](https://www.ruby-forum.com/u/jeanluca)\
**Post date:** [February 3, 2008, 8:44pm UTC](https://www.ruby-forum.com/t/how-to-access-a-method-when-method-name-is-in-a-variable/127290/6 "2008-02-03T20:44:57Z")

</div>

that makes sense, now I understand what send() is actually doing!

thnx!!!  
LuCa

---

<div class="post-metadata">

**Author:** ![jeanluca](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/74df32/32.png) [@jeanluca](https://www.ruby-forum.com/u/jeanluca)\
**Post date:** [February 3, 2008, 1:21pm UTC](https://www.ruby-forum.com/t/how-to-access-a-method-when-method-name-is-in-a-variable/127290/7 "2008-02-03T13:21:32Z")

</div>

Luca S. wrote:

> For example, this doesn’t work
> 
> my\_object.send(my\_var) = 2000

If you use attr\_writer :foo, it creates the method foo= which takes one  
argument. So you’d call it like this:  
send(:foo=, 2000)  
or  
my\_var = “foo”  
send("#{my\_var}=", 2000)

HTH,  
Sebastian
