Rails - 如何从lib目录中调用方法?

时间:2013-02-27 11:04:25

标签: ruby class methods

我在lib目录(文件my_class_name.rb)中有这个方法:

class MyClassName
  def doSomething
    ...
  end
  ...
end

在控制器中:

class UsersController < ApplicationController
  require 'my_class_name'

  def show_stats
    ::MyClassName.doSomething()
  end
end

返回

  

MyClassName的未定义方法`doSomething':Class

如何正确调用此方法?

4 个答案:

答案 0 :(得分:3)

你已经用一个实例方法编写了一个类,所以如果你想用它来编写它,你需要写一下:

  mcn = MyClassName.new
  mcn.doSomething

(通过创建实例,然后在该实例上调用该方法)

如果您想要的是类方法,请将其定义为:

class MyClassName
  def self.doSomething
    ...
  end
  ...
end

并将其称为:MyClassName.doSomething

答案 1 :(得分:0)

class MyClassName
  def self.doSomething
    ...
  end
  ...
end

答案 2 :(得分:0)

你已经制作了实例方法而不是类方法,改变你的代码如下,加上我建议你不要把它作为一个类使它成为一个模块并包含在你的模型中并从模型中调用doSomething。

class MyClassName
  def self.doSomething
    ...
  end
  ...
end

class UsersController < ApplicationController
  require 'my_class_name'

  def show_stats
    MyClassName.doSomething()
  end
end

答案 3 :(得分:0)

如果您希望按原样运行(只需稍加更改),那么您应该创建一个MyClassName实例,例如: :: MyClassName。 new .doSomething()

class MyClassName
  def doSomething
    ...
  end
  ...
end

class UsersController < ApplicationController
  require 'my_class_name'

  def show_stats
    ::MyClassName.new.doSomething()
  end
end