如何在rails 4上的ruby中调用自定义方法?

时间:2014-02-05 20:33:55

标签: ruby-on-rails ruby ruby-on-rails-4

我想创建一个自定义方法,我已在 questions_controller.rb 文件中定义,如下所示:

def self.ping
  @question = Question.first
  @question.update(:amplify => @question.amplify + 1)
end

现在的问题是如何调用此方法?我是否需要先定义路线?如何从控制台中引用它?

提前致谢。

3 个答案:

答案 0 :(得分:4)

我建议将它移到您的模型中:

<强> question.rb

def self.ping
  question = Question.first
  question.update(:amplify => question.amplify + 1)
end

并定义自定义路线 routes.rb

post '/ping' => 'questions#ping', as: 'ping'

<强> questions_controller.rb

def ping
   Question.ping
end

然后你可以从控制台引用它:

Question.ping

答案 1 :(得分:0)

请阅读此http://www.railstips.org/blog/archives/2009/05/11/class-and-instance-methods-in-ruby/

class Foo

def self.bar

puts 'class method'

def baz

puts 'instance method'

Foo.bar#=&gt; “课堂方法”

Foo.baz#=&gt; NoMethodError:Foo的未定义方法'baz':Class

Foo.new.baz#=&gt;实例方法

Foo.new.bar#=&gt; NoMethodError:未定义的方法'bar'

答案 2 :(得分:0)

而不是

question.update(:amplify => question.amplify + 1)

您可以使用

question.increment!(:amplify)