Thanks snusnu.

Interestingly, nothing is modifying the attributes before save or
update.

When the submitted form contains associated fields such as
trip[trip_clients_attributes][0][is_invoicable] then we get the dirty
resource error.

Here's an example of submitted params:

merb : worker (port 81) ~ Params: {"_method"=>"put",
"trip"=>{"version_of_trip_id"=>"94154", "name"=>"A lovely new trip2",
"start_date"=>"03/10/2010", "user_id"=>"99", "adults"=>"1",
"end_date"=>"03/10/2010", "company_id"=>"1", "children"=>"0",
"type_id"=>"1", "infants"=>"0",
"trip_clients_attributes"=>{"0"=>{"id"=>"54198", "is_single"=>"0",
"is_primary"=>"1", "is_invoicable"=>"1"}, "1"=>{"id"=>"54215",
"is_single"=>"1", "is_primary"=>"0", "is_invoicable"=>"1"}}},
"client_id"=>"2138471587", "group_id"=>"4", "submit"=>"Save changes",
"controller"=>"trips", "action"=>"update", "id"=>"94154",
"format"=>nil}

Controller action:

  def update(id, trip)
    @trip = Trip.get(id)
    raise NotFound unless @trip
    if @trip.update(trip)
  ...

On Mar 13, 1:21 am, Martin Gamsjaeger <[email protected]> wrote:
> George,
>
> Calling #update on a dirty resource indeed raises an error and that is
> the expected dm behavior (it's got nothing to do with my plugin). If
> you find yourself updating the attributes of a resource in different
> places before persisting it, you should use #save instead of #update.
> This is probably confusing to some people, because #update only
> started to raise that error with recent versions of dm. I'm not sure
> if it was introduced in 0.10.1 or 0.10.2, but iirc, it wasn't present
> in 0.10.0 and definitely not in 0.9.x.
>
> cheers
> snusnu
>
> On Fri, Mar 12, 2010 at 16:43, George <[email protected]> 
> wrote:
> > Am using snusnu's excellent "dm-accepts_nested_attributes" plugin but
> > getting an error when submitting a form to update a "Trip" object:
>
> >  "Update Conflict Error 500 TripClient#update cannot be called on a
> > dirty resource"
>
> > trips are related to clients through trip_clients
> > and the Trip model accepts_nested_attributes_for :trip_clients
> > (to allow a couple of extra fields to be set on each association, such
> > as 'is_invoicable')
>
> > It saves fine if I only save changes to fields in trip_clients, but
> > the error crops up if I also submit changes to the trip object at the
> > same time.
>
> > Any ideas why?
>
> > Many thanks,
> > George
>
> > --
> > You received this message because you are subscribed to the Google Groups 
> > "DataMapper" 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 
> > athttp://groups.google.com/group/datamapper?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"DataMapper" 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/datamapper?hl=en.

Reply via email to