# Newbie problem with adding new method to a class

**URL:** <https://www.ruby-forum.com/t/newbie-problem-with-adding-new-method-to-a-class/77444>\
**Category:** Rails\
**Created:** [March 6, 2006, 9:32pm UTC](https://www.ruby-forum.com/t/newbie-problem-with-adding-new-method-to-a-class/77444 "2006-03-06T21:32:15Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![g0nzo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/3bc359/32.png) [@g0nzo](https://www.ruby-forum.com/u/g0nzo)\
**Post date:** [March 6, 2006, 9:32pm UTC](https://www.ruby-forum.com/t/newbie-problem-with-adding-new-method-to-a-class/77444/1 "2006-03-06T21:32:15Z")

</div>

Hi!

If i have Image class and i’d like to add ‘create\_thumbnail’ method to  
it, which will later be called from product controller, where to put  
this method and how to call it?

I’ve tried putting it inside image controller and image model, then call  
it like Image.create\_thumbnail, but it didn’t work - undefined method  
`create\_thumbnail’ for Image:Class.

---

<div class="post-metadata">

**Author:** ![g0nzo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/3bc359/32.png) [@g0nzo](https://www.ruby-forum.com/u/g0nzo)\
**Post date:** [March 6, 2006, 9:49pm UTC](https://www.ruby-forum.com/t/newbie-problem-with-adding-new-method-to-a-class/77444/2 "2006-03-06T21:49:11Z")

</div>

If this is an activerecord model, the create method is probably there:

Image.create(:someattribute =\> ‘value’)

But if you want to define your own:

class Image  
def self.create  
‘hi’  
end  
end

> > Image.create  
> > =\> ‘hi’

On Monday, March 06, 2006, at 9:32 PM, szymek wrote:

> –  
> Posted via [http://www.ruby-forum.com/](http://www.ruby-forum.com/).
> 
> * * *
> 
> Rails mailing list  
> removed\_email\_address@domain.invalid  
> [http://lists.rubyonrails.org/mailman/listinfo/rails](http://lists.rubyonrails.org/mailman/listinfo/rails)

Jules

---

<div class="post-metadata">

**Author:** ![g0nzo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/3bc359/32.png) [@g0nzo](https://www.ruby-forum.com/u/g0nzo)\
**Post date:** [March 6, 2006, 10:02pm UTC](https://www.ruby-forum.com/t/newbie-problem-with-adding-new-method-to-a-class/77444/3 "2006-03-06T22:02:38Z")

</div>

szymek wrote:

> Hi!
> 
> If i have Image class and i’d like to add ‘create\_thumbnail’ method to  
> it, which will later be called from product controller, where to put  
> this method and how to call it?
> 
> I’ve tried putting it inside image controller and image model, then call  
> it like Image.create\_thumbnail, but it didn’t work - undefined method  
> `create\_thumbnail’ for Image:Class.

Do you want a class method or an instance method?

Class methods look like this:

class Image

def self.create\_thumbnail  
# return a thumbnail image here  
# You probably need to pass some arguments to this method  
# so it knows what to do  
end

end

but instance methods look like this:

class Image

def create\_thumbnail  
# return a thumbnail image of this object  
end

end

Notice there’s no “self.” prefixed to the method name here.

Jeff

> **[Hey Daddio!](http://www.softiesonrails.com)**
>
> Home of Hey Daddio Software

---

<div class="post-metadata">

**Author:** ![g0nzo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/3bc359/32.png) [@g0nzo](https://www.ruby-forum.com/u/g0nzo)\
**Post date:** [March 6, 2006, 11:06pm UTC](https://www.ruby-forum.com/t/newbie-problem-with-adding-new-method-to-a-class/77444/4 "2006-03-06T23:06:41Z")

</div>

Thanks a lot for clearing things up!

---

<div class="post-metadata">

**Author:** ![g0nzo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/3bc359/32.png) [@g0nzo](https://www.ruby-forum.com/u/g0nzo)\
**Post date:** [March 7, 2006, 8:48am UTC](https://www.ruby-forum.com/t/newbie-problem-with-adding-new-method-to-a-class/77444/5 "2006-03-07T08:48:55Z")

</div>

> Do you want a class method or an instance method?

Which is most appropriate ?

Class methods can be used without being tied to any particular object.

Instance methods belong to a individual object.

\_tony
