# Passing method name to method?

**URL:** <https://www.ruby-forum.com/t/passing-method-name-to-method/115804>\
**Category:** Ruby\
**Created:** [September 28, 2007, 5:24pm UTC](https://www.ruby-forum.com/t/passing-method-name-to-method/115804 "2007-09-28T17:24:52Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![arfon](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@arfon](https://www.ruby-forum.com/u/arfon)\
**Post date:** [September 28, 2007, 5:24pm UTC](https://www.ruby-forum.com/t/passing-method-name-to-method/115804/1 "2007-09-28T17:24:52Z")

</div>

Hi, sorry if this isn’t phrased quite as it should be!

I want to have a generic ‘find’ method that can check to see if an  
object’s attribute is true or false.

Basically I want to pass the method name (param) to the list\_by\_param  
method but this doesn’t seem to be working (I get an undefined local  
variable or method ‘param’ for main:Object) error.

def list\_by\_param(param)  
puts “#{object.id}” if object.param == true  
end

puts objects.list\_by\_param(param)

Any idea where I’m going wrong?

Thanks

---

<div class="post-metadata">

**Author:** ![arfon](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@arfon](https://www.ruby-forum.com/u/arfon)\
**Post date:** [September 28, 2007, 5:34pm UTC](https://www.ruby-forum.com/t/passing-method-name-to-method/115804/2 "2007-09-28T17:34:15Z")

</div>

On 9/28/07, Arfon S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> puts “#{object.id}” if object.param == true  
> end
> 
> puts objects.list\_by\_param(param)

I _think_ what you are trying to do is

def list\_by\_param(param)  
puts “#{object\_id}” if object.send(param) == true  
end

puts objects.list\_by\_param(:param)

---

<div class="post-metadata">

**Author:** ![arfon](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@arfon](https://www.ruby-forum.com/u/arfon)\
**Post date:** [September 28, 2007, 5:37pm UTC](https://www.ruby-forum.com/t/passing-method-name-to-method/115804/3 "2007-09-28T17:37:11Z")

</div>

On 9/28/07, Arfon S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> I want to have a generic ‘find’ method that can check to see if an  
> object’s attribute is true or false.
> 
> Basically I want to pass the method name (param) to the list\_by\_param  
> method but this doesn’t seem to be working (I get an undefined local  
> variable or method ‘param’ for main:Object) error.

class Object  
def objid\_if\_param(param)  
“#{self. **id** }” if self. **send** (param) == true  
end  
end

class Foo  
attr\_accessor :foo  
end

bar = Foo.new  
baz = Foo.new  
baz.foo = true

[bar, baz].each do |ob|  
id = ob.objid\_if\_param(:foo)  
puts id if id  
end

-austin

---

<div class="post-metadata">

**Author:** ![arfon](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@arfon](https://www.ruby-forum.com/u/arfon)\
**Post date:** [September 28, 2007, 5:38pm UTC](https://www.ruby-forum.com/t/passing-method-name-to-method/115804/4 "2007-09-28T17:38:44Z")

</div>

Logan C. wrote:

> On 9/28/07, Arfon S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:
> 
> > puts “#{object.id}” if object.param == true  
> > end
> > 
> > puts objects.list\_by\_param(param)
> 
> I _think_ what you are trying to do is
> 
> def list\_by\_param(param)  
> puts “#{object\_id}” if object.send(param) == true  
> end
> 
> puts objects.list\_by\_param(:param)

It works!

Thanks. So I have to pass a symbol to the method to get this to work?
