2017-05-14

Railsのコントローラでsendメソッドを定義すると起こること

かなり初心者的ミスをしたので備忘録。

Railsのコントローラでsendメソッドを定義すると以下のエラーが発生します。

wrong number of arguments (1 for 0)

トレースを追うとこんな感じ。

app/controllers/home_controller.rb:6:in `send'
activesupport (5.0.1) lib/active_support/callbacks.rb:90:in `run_callbacks'
actionpack (5.0.1) lib/abstract_controller/callbacks.rb:19:in `process_action'
actionpack (5.0.1) lib/action_controller/metal/rescue.rb:20:in `process_action'

run_callbackでObject#sendメソッドを呼び出していて、Object#sendをオーバーライドしたのが原因。

def run_callbacks(kind, &block)
  send "_run_#{kind}_callbacks", &block
end

なんて初歩的な…orz

このエントリーをはてなブックマークに追加