On booleans and database portability
Oh, booleans. Simplest and most elusive of database types. How to specify you? Y and N? T and F? 0 or NULL and anything else? If only we knew…
When working on a Rails app that uses different databases (say, SQLite for development/testing and MySQL for production), be sure that your conditions clauses aren’t assuming a particular form of boolean representation.
This will return nothing in SQLite:
@monkeys = Monkey.find(:all,
:conditions => 'rabid = 0')
But it’ll work in MySQL.
A Solution
Autogenerate that sucker!
@monkeys = Monkey.find(:all,
:conditions => ['rabid = ?', false])
Yay!
April 21st, 2006 at 8:38am
Good tip. Database-specific implementations are killing me right about now, I would kill for a truly standard data interface language and minimal featureset (why, oh why would any database in its right mind create transaction capability before implementing resutset intersections?)