Dynamoid/dynamoid

calling .save on a nested obj is not working on 3.10.0

Closed this issue · 2 comments

my_obj.metadata[:some][:path][:count] = 5
my_obj.save # this does not actually trigger an `UPDATE` request

my_obj.fubar = 'something else'
my_obj.save # this triggers an `UPDATE` request

On 3.8.0, calling .save triggers a PUT for both scenarios above.
On 3.8.0, if you change nested attributes like my_obj.metadata[:some][:path][:count] = 5, calling my_obj.changes afterwards returns an empty hash.

For context, I was operating on the same object but different columns, from 2 different threads, and realized one thread was overriding the other because .save calls PUT, so I was checking if I can get Dynamoid to call UPDATE to avoid this issue.

Yeah, it's a known issue. Changes in a nested object (e.g. of a custom type, or serialized /map/array types) aren't detected and don't trigger persisting.

There are already issues for it: #666, #749, #738

Ah, sorry for the dup. I will close and follow the others.