我想创建一个自定义方法,我已在 questions_controller.rb 文件中定义,如下所示:
def self.ping
@question = Question.first
@question.update(:amplify => @question.amplify + 1)
end
现在的问题是如何调用此方法?我是否需要先定义路线?如何从控制台中引用它?
提前致谢。
答案 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)