Sequelの怖いところ


Sequelでハマったのでメモ。

JOIN

Sequelでjoinするときにjoinされるテーブルとjoinするテーブル双方にidがあると、fetchの結果のidがjoinするテーブル側になる場合があります。

どっちのidも必要な場合は、graphを使いましょう。

LIKE

SequelのlikeはデフォルトだとLIKE BINARYを発行するので、大文字小文字が区別されてしまいます。

ilikeを使いましょう。

ハマるたびに更新していこう、この記事・・・

IN

DB[:users].where(:name => []).all

where条件に空配列加えたときのクエリが、以下になります。

SELECT * from users where name != name;

こいつ、テーブル内をすべてスキャンするのでとても重い上に、何も返ってこないという酷いもので、スロークエリに頻繁に登場していた。

最初原因が分からなくて、なんぞ!ってキレたくなったのがこいつです。

空配列はsequelに突っ込んではいけません。

コメントする

あなたのメールは 絶対に 公開されたり共有されたりしません。

次の HTML タグと属性が使用できます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>