Model's boolean attribute always being set to true?

(Apologies if this ends up being a duplicate. I’ve been battling
Google G. and don’t see the OP on the site so I’m going to try
once more.)

My Article model has one boolean field called “draft”. I’m using
sqlite3 and Rails 3.0.3. The boolean column (which was created
with :boolean) is storing ‘true’ and ‘false’ as ‘t’ and ‘f’ in the
database, and the queries appear to be working fine for both cases.
The problem is that when I look at the draft attribute on the query
result objects, it is always “true”:

@articles = Article.where(:draft => false) # returns the correct
logger.debug(@articles[0].draft) # will show ‘true’

I know that Ruby treats ‘f’ as true, but I’m assuming Rails will
convert it to false as part of the mapping. Why isn’t it working?


There is a value in the column which means true, you need to create a
method in the model to translate that for you.