Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Loading…

Arrays / Sets won't update properly #240

Open
js-coder opened this Issue · 2 comments

2 participants

@js-coder

One of my models has a property that is a Set. (Same problem with arrays.)

property :some_set, Object

When I create an instance, the set is properly saved. But when I try to update the set (add a field to the set, and save the instance) the new set is not saved to the database.

instance = Model.first
instance.some_set #=> <Set: {"a", "b"}>

instance.some_set = instance.some_set.add('c')
instance.save()

instance.some_set #=> <Set: {"a", "b", "c"}>
Model.first.some_set #=> <Set: {"a", "b"}>

How to reproduce:

$ git clone https://github.com/js-coder/dm-sets.git
$ cd dm-sets
$ ruby set.rb
$ ruby array.rb
@mbj
Owner

With objects mutated inplace dm1 is unable to detect dirtyness. A verbose answer can be found here: http://stackoverflow.com/questions/13917062/why-datamapper-does-not-update-records-detect-dirtiness. dm-types tries to workaround this with a dirty-minder, but this IMHO only does only fix the symptoms not the problem itself.

DataMapper 2.0 does not have this problem, by design.

@js-coder

So I'd include dm-types and use Flag for arrays? There's no type for a Set right?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.