今日のありえないさん

nantara_controller.rbにて

  def foo_bar_list
    @foo = Foo.find(params[:id])
    @bar = @foo.bars.find(:all,
    ....................
  end

親fooとそれにぶら下がる子レコードbarのリストを表示させるごくごく平凡なメソッドの筈がviewでnil.objectって怒られまくり。
typoを疑うも、tyopはなし。片っ端からコメントアウトしていったら、全部をコメントアウトする羽目に。debug(@foo)とかしても、中身は空っぽ。
ではではと渡されてるparams[:id]を見てみるとこれまたからっぽ。log/development.rb見ると、idはちゃんと前アクションから渡されてる。けどfoo_bar_listではうんともすんともいわず、session[:user]の為のSQLが投げられているだけで、メソッド内のfindとかのsqlは一切出ず。
うー、よくわからなくなってきたと、とりあえずraise params[:id].inspectとか片っ端からraiseかけてやると思ったら、まったくraiseが引っかからない。あれれ、foo_bar_listメソッド内が全く機能してないよ・・・という所ではたと気づきました。で、おもむろにnantara_controller.rbのコードをじっくり見ると・・・・

  def foo_bar_list
    ................
  end

  def bar_edit
    ..............
  end

  def bar_create
    ...............
  end

............................

  def foo_bar_list
  end

foo_bar_listが二つ、しかも、中身空っぽのやつが・・。昨日作業してて、「よし、明日はfoo_bar_listを作ろう。とりあえずdef 〜 endだけ用意しておこうっと。」と自分でやったことをすっかり忘れて、別の位置に新たにfoo_bar_listを書いてしまったのでした。原因特定時に自分の記憶力の無さと、あまりのまぬけぶりに愕然としてしまいました。恥ずかしすぎ。