On Jan 9, 6:16 pm, codeinnova <[email protected]> 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 [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

