I had a working 1.2 app which I have just updated to 2.3.2 -- mostly
seems good so far, but the Rails technique for booleans is acting up.
MySQL column = `childSensitiveCase` varchar(1) NOT NULL default '0'
as long as I remember, with mysql rails expects booleans to be tinyint
columns
Well, like I say this is currently working on an instance running as
Rails 1.2, and...
AWDWR 3rd Ed pg 320:
"This form of attribute accessor looks at the column’s value. It is
interpreted as false only if it is the number 0; one of the strings "0",
"f", "false", or "" (the empty string); a nil; or the constant false.
Otherwise, it is interpreted as true."
To me this implies a varchar field will work.
However, I changed the column to tinyint(1) and that does indeed behave
as desired. So, I'll just change it. Thx.
For those that are interested, ... the discussion in the AWDR book
that preceded that particular quote and the suggested action for
dealing with differences in underlying db storage of boolean vals:
> > On Jul 27, 5:45 pm, Greg Willits <rails-mailing-l...@andreas-s.net>
> AWDWR 3rd Ed pg 320:
Greg, if you're referencing AWDwR 3ed, then you must have read the
section
17.1 which explains the mappings between Ruby symbols and the underlying
database in regards to migrations.
Sure, but... (to clarify how I drew my conclusions)
That describes what a migration will create--which could be independent
of how the accessor works. IOW, it doesn't necessarily imply that
tinyint(1) is the only valid field type on which the ? accessor will
work. In fact, that's exactly what I am saying, the rest of the text in
the book which covers this topic specifically implies that a character
field will work.