It probably would have helped if I had mentioned the new ticket:  It
is ticket #9843

  http://dev.rubyonrails.org/ticket/9843

-Chris

On Oct 12, 10:05 am, Chris Cruft <[EMAIL PROTECTED]> wrote:
> Looking for love for my patch correcting behavior of composed_of with
> allow_nil => true.  This patch, in various forms from various authors,
> has been around for over a year.  It has never been accepted into core
> due to a lack of tests.  Well, I've now added the failing tests and
> the patch against edge that fixes it.
>
> I'd like someone else to test my patch and get this damn thing into
> trunk -I'm tired of rewriting the patch every couple of months.
>
> NB: Without this patch, the documentation is wrong as well.
>
> >From my ticket:
>
> Since composed_of added support for the allow_nil option ([4353]), it
> has always had a documented defect when assigning nil to the aggregate
> object. You can see documentation of the defect and a suggested (but
> now outdated) fix on #5091.
>
> This defect was later corrected in a more ambitious patch by a
> different author in #6322. That patch too has now become outdated -
> even though I updated it once.
>
> This ticket provides a simple patch and failing test that only seeks
> to correct the defect, which is as follows:
>
> class Place
>   composed_of :location, :allow_nil => true
> end
>
> myplace.location @ => #<Location:0x3bf8 @lat=30, @alt=nil, @lon=40>
> myplace.lat # => 30
> myplace.lon # => 40
> myplace.alt # => nil
> myplace.location = nil
> myplace.lat # => nil        (good...)
> myplace.lon # => nil        (good...)
> myplace.alt # => nil        (looking good...)
> myplace.location @ => #<Location:0x3bf8 @lat=30, @alt=nil, @lon=40>
>                              (whoops!!  what happened?)
>
> Clearly, assigning nil to the aggregate object should result in its
> value being nil. In the current code, this only happens after a save/
> find cycle. My patch makes it immediate, which is consistent with non-
> nil value object assignment behavior (and common sense).


--~--~---------~--~----~------------~-------~--~----~
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 [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-core?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to