ActiveRecordはtypeっていうcolumnがあると発狂する

さっきまで2時間くらい悩んでました。発狂っていうか

NoMethodError: undefined method `empty?' for 0:Fixnum

とか言い出します。いやいや、なんでFixnumにempty?とか聞くの??犯人はtypeっていうcolumnでした。typeは、Single Table Inheritanceに使われるんですね。あー怖い。

ちなみに、今回はtypeがintegerだったからすぐ気づいたけど、これがStringだったら絶対気づかなかったと思う。恐しい。

何がむかつくって、そのちょっと前にユニットテスト書いてて「なんか変だな」っていうのには気づいてるんですよ。

item = collection.items.create(:type => Item::Type::Type1)

とかやったら動かなかったの。

item = collection.items.create
item.type = Item::Type::Type1

ならOK。そこでもうちょっとちゃんと考えておけば、その後はまらずにすんだわけで、悔しい。

結局、typeじゃなくてkindにしてwork around。なんか無駄にhigher orderな感じがして、ちょっと嫌ですが、他の単語思い付かなかったんだからしかたない。もしかしたらtype_とかのほうがwork around感が出て良かったかもしれない。