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.