如何在Rails中访问私有类方法

时间:2014-11-19 09:55:16

标签: ruby-on-rails class class-method private-methods

我有一个类初始化。

我有一个方法send_mail,它是一个类方法

def self.send_mail
  a = user_stats
end

user_stats是一个私有方法,当我尝试调用此方法时,它会抛出错误

class << self

  private

  def user_stats
    true
  end

end

当我尝试访问user_stats时,

 undefined method 'user_stats' for Initialization

也试过

class << self

def self.send_mail
  a = user_stats
end

  private

  def user_stats
    true
  end

end

1 个答案:

答案 0 :(得分:3)

你的两种方法都是正确的,但在后者中你不应该使用self,因为你已经在Initialization的本征类中定义了方法:

class Initialization
  class << self
    def send_mail
      a = user_stats
    end
    private
    def user_stats
      true
    end
  end
end
Initialization.send_mail
# => true

你的第一种方法对我也有用:

class Initialization
  def self.send_mail
    a = user_stats
  end
  class << self
    private
    def user_stats
      true
    end
  end
end
Initialization.send_mail
# => true