odeの開発メモ日記

プログラマーやってます。今までの道のり ポケコンbasic→C(DirectX5 ネットやろうぜ)→Perl(ちょろっと)→Java→C#→Ruby→Android(Java)

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が引数なしで実行され、その戻り値に=で代入するという
意味のないことをしていたのね。。


これは今回以外の場合でも気づかずにやっちゃいそうだ。。
おいら以外に犠牲者がでないことを祈ります。