I second Matt's point about potential for confusion.  A boolean val
implies one of two values: true or false.  What you're asking for -- 1
of 3 potential vals -- seems to rule out the use of a boolean to
represent that val.  So, I'd recommend using some other data type.

Jeff

On Jan 10, 11:57 am, Matt Jones <al2o...@gmail.com> wrote:
> On Jan 9, 6:16 pm, codeinnova <sumangur...@gmail.com> wrote:
>
> > So i had a boolean attribute in my model which gets interpreted to
> > tinyint(1) in mysql by rails migrations. Now tinyint(1) accepts a
> > range in mysql and i want to change my boolean attribute to an
> > attribute which can accept 3 values(0,1,2).
> > I made the change to the view and when i post the form selecting the
> > selecting the value '2', it still gets saved as a '0'. I checked the
> > params when the post is done and the value of the form element was '0'
> > even though i selected '2'(I am using a dropdown list here).
> > So my question really is, how can i make rails to accept more values
> > without changing the type to something other than tinyint(1)? And why
> > this weirdness?
>
> As others have pointed out, MySQL doesn't have a straight "boolean"
> field type, so the tinyint(1) hack is used instead.
>
> You'll either need to turn off emulate_booleans (which may break other
> stuff) or just change the column type, as the MySQL adapter will
> detect the current type as :boolean and the AR-generated accessors
> will wind up casting values as booleans automatically...
>
> Not to mention the potential for confusion - imagine you're another
> developer, looking at schema.rb. You see a field 'foo' declared
> as :boolean, and the interface stuffs '2' in there - what's it
> supposed to mean? FILE_NOT_FOUND? :)
>
> --Matt Jones
-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to rubyonrails-t...@googlegroups.com.
To unsubscribe from this group, send email to 
rubyonrails-talk+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.


Reply via email to