Model's boolean attribute always being set to true?

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
rows
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?

Thanks,
Jim

On Dec 31, 2010, at 3:15 AM, Jim wrote:

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
rows
logger.debug(@articles[0].draft) # will show ‘true’

maybe try logger.debug( @articles[0].draft? ) since that’s more
explicitly asking “is this true-ish?”

Walter

I figured it out. I had an error in one of the model callbacks and
was overwriting the data that had just been read from the DB.

Thanks,
Jim