# Mailer method missing

**URL:** <https://www.ruby-forum.com/t/mailer-method-missing/91335>\
**Category:** Rails\
**Created:** [April 6, 2007, 10:42pm UTC](https://www.ruby-forum.com/t/mailer-method-missing/91335 "2007-04-06T22:42:57Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![taylorstrait](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/b5a626/32.png) [@taylorstrait](https://www.ruby-forum.com/u/taylorstrait)\
**Post date:** [April 6, 2007, 10:42pm UTC](https://www.ruby-forum.com/t/mailer-method-missing/91335/1 "2007-04-06T22:42:57Z")

</div>

Rails dies when I try to call a method from my Mailer. But I have  
defined my method. What could I have missed? Here is the irb session:

> > p = Person.find(1)  
> > =\> Person data…

> > SiteMailer.request\_admin\_approval§  
> > NoMethodError: undefined method `request\_admin\_approval’ for  
> > SiteMailer:Class

> > SiteMailer.method\_defined? :request\_admin\_approval  
> > =\> true

The method code:

class SiteMailer \< ActionMailer::Base

def request\_admin\_approval(person)  
@subject = ‘Watercooler - New User Notification’  
@body[“person”] = person  
@recipients = “me”  
@from = ‘removed\_email\_address@domain.invalid’  
@sent\_on = Time.now  
@headers = {}  
end

---

<div class="post-metadata">

**Author:** ![taylorstrait](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/b5a626/32.png) [@taylorstrait](https://www.ruby-forum.com/u/taylorstrait)\
**Post date:** [April 6, 2007, 10:50pm UTC](https://www.ruby-forum.com/t/mailer-method-missing/91335/2 "2007-04-06T22:50:35Z")

</div>

Taylor S. wrote:

> Rails dies when I try to call a method from my Mailer. But I have  
> defined my method. What could I have missed? Here is the irb session:
> 
> The method code:
> 
> class SiteMailer \< ActionMailer::Base
> 
> def request\_admin\_approval(person)  
> #…  
> end

To call your mail methods, you dont call them directly:

SiteMailer.deliver\_request\_admin\_approval(person)

Which sends the email and returns a TMail object.

---

<div class="post-metadata">

**Author:** ![taylorstrait](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/b5a626/32.png) [@taylorstrait](https://www.ruby-forum.com/u/taylorstrait)\
**Post date:** [April 6, 2007, 10:47pm UTC](https://www.ruby-forum.com/t/mailer-method-missing/91335/3 "2007-04-06T22:47:27Z")

</div>

On Fri, 2007-04-06 at 22:42 +0200, Taylor S. wrote:

> > > SiteMailer.method\_defined? :request\_admin\_approval  
> > > @recipients = “me”  
> > > @from = ‘removed\_email\_address@domain.invalid’  
> > > @sent\_on = Time.now  
> > > @headers = {}  
> > > end

* * *

try ‘self’

def self.request\_admin\_approval(person)

–  
Craig W. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![taylorstrait](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/b5a626/32.png) [@taylorstrait](https://www.ruby-forum.com/u/taylorstrait)\
**Post date:** [April 6, 2007, 11:12pm UTC](https://www.ruby-forum.com/t/mailer-method-missing/91335/4 "2007-04-06T23:12:29Z")

</div>

On 4/6/07, Taylor S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> SiteMailer:Class
> 
> > > SiteMailer.method\_defined? :request\_admin\_approval  
> > > =\> true

It is true… there is a method named request\_admin\_approval for  
SiteMailer… but it is an instance method (as in:  
s = SiteMailer.new  
s.request\_admin\_approval(p)  
)

You’re trying to access it as a class method… which means, you would  
need  
to define self.request\_admin\_approval in the SiteMailer class instead of  
just request\_admin\_approval.

Or, you will have to make an instance of your SiteMailer object in order  
to  
call the function.

The method code:
