Can't I call a private method from a self.method

Hi
I have in MailSending class
def self.send_mail_to_all_contacts(problem)
description=split_name_and_email_array(joined_array,problem)
end

private
def split_name_and_email_array(name_email_array,pb)
code…
split_value=“somevaluehere”
end

But here I get error as
undefined method `split_name_and_email_array’ for MailSending:Class
So Can’t I call a private method from a class method

Thanks in advance
Sijo

On Sep 11, 9:34 am, Sijo Kg [email protected] wrote:

end

But here I get error as
undefined method `split_name_and_email_array’ for MailSending:Class
So Can’t I call a private method from a class method

You can’t but that isn’t the problem here. You can’t call an instance
method without an instance of the class (which you don’t have).

Fred

Hi
Thanks for the reply…I can call the first like
MailSendingProblem.send_mail_to_all_contacts(@problem) upto that it is
Ok But it does not call the private method So need I to make the above
private method public or any other solution?

Sijo

On 11 Sep 2008, at 09:56, Sijo Kg wrote:

Hi
Thanks for the reply…I can call the first like
MailSendingProblem.send_mail_to_all_contacts(@problem) upto that it
is
Ok But it does not call the private method So need I to make the above
private method public or any other solution?

Like I said you can’t call an instance method without an instance.
It’s like trying to say ActiveRecord::Base.reload - it doesn’t make
any sense - you can only call that on an instance.

Fred

You need to declare your “split_name_and_email_array” method as a class
method:

def self.split_name_and_email_array(name_email_array,pb)

end

Christian

On Thu, Sep 11, 2008 at 10:34 AM, Sijo Kg

Frederick C. wrote:

Like I said you can’t call an instance method without an instance.
It’s like trying to say ActiveRecord::Base.reload - it doesn’t make
any sense - you can only call that on an instance.

Fred

Ok, so would it be like: self.method() or obj=MailSending.new() and then
obj.method()? Also in the book I’m reading at the moment says that to
use “before filter” to intercept to the actions in the controller we
have to put the particular method in ApplicationController(the parent
class of all our controllers) and that we have to restrict it as any
public methods here are exposed to end users as actions and hence asks
to make it private:

class ApplicationController < ActionController::Base
private
def authorize

end
end

and in the corresponding controllers call it with:

class SomeController < ApplicationController
before_filter :authorize
end

Problems:
Though I have called the method accordingly in the corresponding
controllers, as soon as I make the authorize method private a warning
icon appears at the side as “unused private method authorize” and
underlines all the words with curly yellow lines (by the way I’m using
aptana studio). But, however, everything seems to work fine. So, how can
I get rid of those warning and ugly underlines. Thanks…