我想創建一個自定義的方法,我在我的questions_controller.rb文件中定義,像這樣:如何在rails 4上調用ruby的自定義方法?
def self.ping
@question = Question.first
@question.update(:amplify => @question.amplify + 1)
end
現在的問題是我如何調用該方法?我需要先定義一條路線嗎?我如何從控制檯中引用它?
在此先感謝。
我想創建一個自定義的方法,我在我的questions_controller.rb文件中定義,像這樣:如何在rails 4上調用ruby的自定義方法?
def self.ping
@question = Question.first
@question.update(:amplify => @question.amplify + 1)
end
現在的問題是我如何調用該方法?我需要先定義一條路線嗎?我如何從控制檯中引用它?
在此先感謝。
我建議將它移動到你的模型:
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
請仔細閱讀本http://www.railstips.org/blog/archives/2009/05/11/class-and-instance-methods-in-ruby/
類Foo
高清self.bar
puts 'class method'
末
DEF BAZ
puts 'instance method'
端
端
Foo.bar#=> 「類方法」
Foo.baz#=> NoMethodError:未定義的方法 '巴茲' 的FOO:類
Foo.new.baz#=>實例方法
Foo.new.bar#=> NoMethodError:未定義的方法 '酒吧'
而不是
question.update(:amplify => question.amplify + 1)
您可以使用
question.increment!(:amplify)
你能解釋一下你想用'平做什麼'方法? –
每當'ping'方法被調用時,我想引用第一個'Question'並且通過+1更新它的屬性。因此':amplify'在開始處爲1,然後每次調用方法時,':amplify'增加1。 – user3048402