Ah sorry, I shouldn't have assumed edge. My bad. Thanks Ben - Eloy
On Jan 12, 2009, at 8:30 PM, Ben Symonds wrote: > > This looks like http://rails.lighthouseapp.com/projects/8994/tickets/1530 > (where the test Eloy mentions was added). > > That patch has not been released yet, which is probably why Antoine is > seeing it. > > Ben > > > > -----Original Message----- > From: rubyonrails-core@googlegroups.com > [mailto:rubyonrails-c...@googlegroups.com] On Behalf Of Eloy Duran > Sent: 12 January 2009 18:06 > To: rubyonrails-core@googlegroups.com > Subject: [Rails-core] Re: tracking_attribute_changes and using default > checkbox form in the view > > > I checked the test cases (dirty_test.rb), and it contains a test for > this specifically which passes at least on my env. > > def test_nullable_integer_zero_to_string_zero_not_marked_as_changed > pirate = Pirate.new > pirate.parrot_id = 0 > pirate.save! > # other tests > pirate.parrot_id = '0' > assert !pirate.changed? > end > > Could you check this as well, and otherwise try to extract a small > piece of code, into a test or sample app, which shows the behaviour? > If you do so, please file a ticket. > > - Eloy > > On 12 jan 2009, at 17:27, Antoine wrote: > >> >> You are right, I have a check box helper (by default, it's sending 0 >> or 1 );-) and also my checkbox is represented in my database by an >> integer ==> 0 means unchecked , 1 means check. >> >> So my form is sending 0 because my checkbox is unchecked and before >> sending, the attribute of the object had the same value 0 (I checked >> in the database to be sure) >> >> So I don't understand why rails tell me the state of this attribute >> change ? because the attribute is not changing ... 0 ==> 0 >> >> Best regards, >> Antoine >> >> >> On Jan 12, 11:18 am, Eloy Duran <eloy.de.en...@gmail.com> wrote: >>> Sorry, I forgot to add the most important part :) >>> >>> What might be happening is that you have a default value of nil >>> (NULL) >>> which is then changed to an empty string "". Because the browser >>> sends >>> a value because of the gotcha workaround. >>> >>> So the easiest solution would be to have a default value for the >>> field. >>> Which is something you want to have anyways for a boolean field IMO. >>> >>> - Eloy >>> >>> On Jan 12, 2009, at 5:14 PM, Eloy Duran wrote: >>> >>>> Hi, >>> >>>> This was probably because you used the check_box helper, which >>>> makes >>>> sure the browser always sends a value. >>>> See the documentation for the check_box helper: >>> >>>> === Gotcha >>> >>>> The HTML specification says unchecked check boxes are not >>>> successful, and thus web browsers do not send them. Unfortunately >>>> this introduces a gotcha: if an Invoice model has a paid flag, and >>>> in the form that edits a paid invoice the user unchecks its check >>>> box, no paid parameter is sent. So, any mass-assignment idiom like >>>> @invoice.update_attributes(params[:invoice]) >>>> wouldn't update the flag. >>>> To prevent this the helper generates a hidden field with the same >>>> name as the checkbox after the very check box. So, the client >>>> either >>>> sends only the hidden field (representing the check box is >>>> unchecked), or both fields. Since the HTML specification says key/ >>>> value pairs have to be sent in the same order they appear in the >>>> form and Rails parameters extraction always gets the first >>>> occurrence of any given key, that works in ordinary forms. >>> >>>> - Eloy >>> >>>> On Jan 12, 2009, at 5:05 PM, Antoine wrote: >>> >>>>> Dear all, >>> >>>>> Maybe i wasn't so clear, excuse me for my english ;-) >>> >>>>> My problem is simple .. >>>>> I didn't change the value of my checkboxes in my form but the core >>>>> function of rails was saying that the values currently change ! >>>>> and >>>>> that's why rails update the values in mysql... and also return a >>>>> wrong >>>>> information if i use the new fontions like : attributes_change, >>>>> attribute_changed?... >>> >>>>> I don't understand why ? >>> >>>>> thank you for your help ! >>>>> Antoine >>> >>>>> On Jan 8, 3:39 pm, Antoine <antoine.fauc...@gmail.com> wrote: >>>>>> Dear all, >>> >>>>>> I get a stupid bug and i don't know if there is something wrong >>>>>> in >>>>>> rails or if it is me doing a stupid thing. >>> >>>>>> I have a checkbox called (ass_tg) in my form and when i saved my >>>>>> form , i write in my model: >>> >>>>>> before_save :test >>> >>>>>> def test >>>>>> puts "-----------------------" >>>>>> puts ass_tg_change >>>>>> puts "-------------------------" >>>>>> end >>> >>>>>> I should have a nil answer but I get in my console : >>> >>>>>> ----------------------- >>>>>> 0 >>>>>> 0 >>>>>> ------------------------- >>> >>>>>> And I have this attributes save in the SQL log ..(I didn't change >>>>>> the >>>>>> status of the checkbox ...) >>> >>>>>> UPDATE `companies` SET .... `ass_tg` = 0,...... WHERE `.... >>> >>>>>> It seems like rails don't like integer attributes equal to 0 >>>>>> when it >>>>>> execute all the change functions (change, changed?, was ...) ?? >>> >>>>>> Best regards, >>> >>>>>> Thank you for your help, >>>>>> Antoine >>> > > > > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group. To post to this group, send email to rubyonrails-core@googlegroups.com To unsubscribe from this group, send email to rubyonrails-core+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-core?hl=en -~----------~----~----~----~------~----~------~--~---