composite_primary_keysは悪くないっぽい

なんで文字列のはずのカラムが、SQLのWHERE文で使われるときには、0という数値になってしまうのかを追っかけてましたが、composite_primary_keysの中ではどうもそんなことやってなさ気。
で初心に返って、実際のオブジェクトがどうなっているのかをチェックするために、モデルのcolumnsをinspectしてみたところ、PKのキーのtypeがなんと:integerで@number=true。そりゃ、文字列も0になるわってわけで、マイグレーションをチェック。でもおかしくなーい!
んじゃとりあえず、SQLで直接PKの型を変えてvarcharに。そしたら大体パスしました*1


と言うわけで、PKにvarcharダメなんじゃねーの疑惑は(おそらく)晴れまして、次は:type => :stringというマイグレーションのカラム定義に対してintのカラムを生成するSQLを吐きやがったのはどいつだ、という犯人探しになってきました。

*1:destroyだけは何故か変なwhere文が吐かれて条件に引っ掛かってくれない