2008/07/01
mysql と sqlite3 のどちらでも動作するよう find 文を書く方法
rails でつまずいた点をメモっておきます。
mysql で動いていた開発環境を、rails 2.0 以降デフォルトの DB となった sqlite3 にスイッチしたところ、
SQLite3::SQLException: no such column: true: SELECT * FROM some_tables WHERE (some_column = true) ORDER BY created_at DESC LIMIT 1
のようなエラーがでるようになった。
» http://www.ruby-forum.com/topic/142120#630779
を参考にして、
SomeTable.find(:first, :conditions => ’some_column = true’
となっていた部分を
SomeTable.find(:first, :conditions => [’some_column = ?’, true]
と書き換えることにより、mysql でも sqlite3 でも動くようになりました。
mysql では boolean は true と false ですが、sqlite3 では 1 と 0 だからということなのですね。
この記事にリンク
- コーポレートサイトっぽいものを Ruby on Rails で構築してみた
- 404 Not Found をちゃんと返そうという話といろいろと試す場となる Web サービスを運用してみようという話
- PlaceEngine JavaScript API を使おうとしたところ、IEで「操作は中断されました」エラー

