set_primary_keyではまった。というかRailsレシピのあほー。set系メソッドでやっちゃった話
昔のアプリのDBにActiveRecordで繋げる必要がでたので
プライマリキーの名前を変更するset_primary_keyというメソッドを使いました。
そしたら動かない。。idはない列ですとでる。
なんでだろ。。
Railsレシピの通りに書いてたのに。
(間違い版)
set_primary_key = :hoge_id
通りすがりの同僚がチェック。
あれ、これsetなんだから=いらなくない?
あー、そういえば。
(正しい版)
set_primary_key :hoge_id
と書いてみると。。
動いたーーーー!!!
railsレシピのあほーー。
しかしなんでエラーでないんだ!
と、ソースを見たらこういうことだった。
set_primary_keyの定義 def set_primary_key(value = nil, &block)
引数なしでも動くじゃん。
ってことは
set_primary_keyが引数なしで実行され、その戻り値に=で代入するという
意味のないことをしていたのね。。
これは今回以外の場合でも気づかずにやっちゃいそうだ。。
おいら以外に犠牲者がでないことを祈ります。