# Find(:all) problem

**URL:** <https://www.ruby-forum.com/t/find-all-problem/171712>\
**Category:** Rails\
**Created:** [July 8, 2009, 1:00am UTC](https://www.ruby-forum.com/t/find-all-problem/171712 "2009-07-08T01:00:47Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![mpaxton](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/8c91f0/32.png) [@mpaxton](https://www.ruby-forum.com/u/mpaxton)\
**Post date:** [July 8, 2009, 1:00am UTC](https://www.ruby-forum.com/t/find-all-problem/171712/1 "2009-07-08T01:00:47Z")

</div>

Newbie question, trying to get data from a mysql database. I can write  
to it fine, but when I try to retrieve it I get the following error  
message:

C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active\_record/attribute\_methods.rb:260:in  
`method_missing': undefined method`find’ for #\<Stuff id: nil, mp1: nil,  
mp2: nil\> (NoMethodError)

```
    from C:/rubyapps/stuff/lib/get.rb:16:in `m'

    from C:/rubyapps/stuff/lib/get.rb:10:in `initialize'

    from C:/rubyapps/stuff/lib/get.rb:22:in `new'

    from C:/rubyapps/stuff/lib/get.rb:22

```

This is the code below.

Thanks for your help

require ‘environment’  
require ‘rubygems’  
require ‘Stuff’

class Get

def initialize

```
m

```

end

def m  
@mystuff =Stuff.new

b = @mystuff.find( :all, :select =\> ‘mp1’)  
puts “mp1 has the following values: #{b}”

end  
end

Get.new

---

<div class="post-metadata">

**Author:** ![mpaxton](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/8c91f0/32.png) [@mpaxton](https://www.ruby-forum.com/u/mpaxton)\
**Post date:** [July 8, 2009, 1:03am UTC](https://www.ruby-forum.com/t/find-all-problem/171712/2 "2009-07-08T01:03:51Z")

</div>

Hi

You don’t do find on an instance of the model, you do it on the model  
itself.  
So your find should be

Stuff.find( :all, :select =\> ‘mp1’)

Simon

On Wed, 08 Jul 2009 07:00:47 +0800, Mark P.

---

<div class="post-metadata">

**Author:** ![mpaxton](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/8c91f0/32.png) [@mpaxton](https://www.ruby-forum.com/u/mpaxton)\
**Post date:** [July 8, 2009, 1:09am UTC](https://www.ruby-forum.com/t/find-all-problem/171712/3 "2009-07-08T01:09:50Z")

</div>

Simon M. wrote:

> Hi
> 
> You don’t do find on an instance of the model, you do it on the model  
> itself.  
> So your find should be
> 
> Stuff.find( :all, :select =\> ‘mp1’)
> 
> Simon
> 
> On Wed, 08 Jul 2009 07:00:47 +0800, Mark P.

Thanks! worked great

---

<div class="post-metadata">

**Author:** ![mpaxton](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/8c91f0/32.png) [@mpaxton](https://www.ruby-forum.com/u/mpaxton)\
**Post date:** [July 8, 2009, 1:14am UTC](https://www.ruby-forum.com/t/find-all-problem/171712/4 "2009-07-08T01:14:23Z")

</div>

find is a class method, not an instance method.

Change  
b = @mystuff.find(:all, :select =\> ‘mp1’)  
to  
b = Stuff.find(:all, :select =\> ‘mp1’)

Note: ‘b’ will be an array of ActiveRecords with only the mp1 attribute  
set.  
If you want an array of strings, add:

b = b.map{|rec| rec.mp1}

HTH,  
Jeffrey

Quoting Mark P. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):  
[snip]
