Model中实例的类方法

时间:2015-10-29 21:01:46

标签: ruby-on-rails cron-task

我的项目中有一个cron作业,这个作业执行模型。

class Example < ActiveRecord::Base
     def self.test
         number = getNumber(1)
     end

     def getNumber(i)
         value = 2 + i
         return value
     end
end

如何访问函数getNumber?

2 个答案:

答案 0 :(得分:1)

你的getNumber方法(应该是get_number)是一个实例方法,所以你需要调用Example.new.get_number(1)但是如其他人所提到的那样它是无状态的,所以也可以是一个类方法所以这样可行:

class Example < ActiveRecord::Base
  def self.test
    number = get_number(1)
  end

  def self.get_number(i)
    value = 2 + i
    return value
  end
end

答案 1 :(得分:0)

self.test范围内,您在课堂上(不在实例中)。当你调用getNumber时,Ruby将寻找一个类方法。你上面有一个实例方法。如果您将代码从def getNumber(i)更改为def self.getNumber(i),则会执行您想要的操作。

class Example < ActiveRecord::Base
  def self.test
    number = getNumber(1)
  end

  def self.getNumber(i)
    value = 2 + i
    return value
  end
end

puts Example.test

运行时会输出3