Hey guys,

I have two models that are associated together with many-to-many
relationship. The objects in this relationship are added
asynchronously. There are multiple threads running that create and add
objects.

The problem that I have - I need to keep the order in which the
objects are added.

The two models that I have are:
Query
App

A query can have many apps associated with it. An app can can also
have many queries associated with it.

In the code, I have something like:
query.android_apps << app

This works, but again, this is in it's own thread and I need to
preserve the order.

I tried changing this to:
query.android_apps.insert(index,app)

But when the query is saved I get an error stating:
NoMethodError: undefined method `collection=' for nil:NilClass
        from /usr/local/lib/ruby/gems/1.9.1/gems/dm-core-1.2.0/lib/dm-core/
collection.rb:509:in `ensure in block in each'
        from /usr/local/lib/ruby/gems/1.9.1/gems/dm-core-1.2.0/lib/dm-core/
collection.rb:509:in `block in each'
        from /usr/local/lib/ruby/gems/1.9.1/gems/dm-core-1.2.0/lib/dm-core/
support/lazy_array.rb:411:in `block in each'
        from /usr/local/lib/ruby/gems/1.9.1/gems/dm-core-1.2.0/lib/dm-core/
support/lazy_array.rb:411:in `each'
        from /usr/local/lib/ruby/gems/1.9.1/gems/dm-core-1.2.0/lib/dm-core/
support/lazy_array.rb:411:in `each'
        from /usr/local/lib/ruby/gems/1.9.1/gems/dm-core-1.2.0/lib/dm-core/
collection.rb:504:in `each'
        from /usr/local/lib/ruby/gems/1.9.1/gems/dm-core-1.2.0/lib/dm-core/
collection.rb:1003:in `reject'
        from /usr/local/lib/ruby/gems/1.9.1/gems/dm-core-1.2.0/lib/dm-core/
collection.rb:1003:in `loaded_entries'
        from /usr/local/lib/ruby/gems/1.9.1/gems/dm-core-1.2.0/lib/dm-core/
associations/many_to_many.rb:444:in `_save'
        from /usr/local/lib/ruby/gems/1.9.1/gems/dm-core-1.2.0/lib/dm-core/
collection.rb:872:in `save'
        from /usr/local/lib/ruby/gems/1.9.1/gems/dm-core-1.2.0/lib/dm-core/
resource.rb:1054:in `block in save_children'
        from /usr/local/lib/ruby/gems/1.9.1/gems/dm-core-1.2.0/lib/dm-core/
resource.rb:1053:in `map'
        from /usr/local/lib/ruby/gems/1.9.1/gems/dm-core-1.2.0/lib/dm-core/
resource.rb:1053:in `save_children'
        from /usr/local/lib/ruby/gems/1.9.1/gems/dm-core-1.2.0/lib/dm-core/
resource.rb:1006:in `block in _save'
        from /usr/local/lib/ruby/gems/1.9.1/gems/dm-core-1.2.0/lib/dm-core/
resource.rb:1222:in `run_once'
        from /usr/local/lib/ruby/gems/1.9.1/gems/dm-core-1.2.0/lib/dm-core/
resource.rb:1005:in `_save'
        from /usr/local/lib/ruby/gems/1.9.1/gems/dm-core-1.2.0/lib/dm-core/
resource.rb:405:in `save'
        from /usr/local/lib/ruby/gems/1.9.1/gems/dm-validations-1.2.0/lib/dm-
validations.rb:40:in `block in save'
        from /usr/local/lib/ruby/gems/1.9.1/gems/dm-validations-1.2.0/lib/dm-
validations/context.rb:16:in `in_context'
        from /usr/local/lib/ruby/gems/1.9.1/gems/dm-validations-1.2.0/lib/dm-
validations.rb:40:in `save'
        from /var/www/cgi/lib/models/store/store.rb:171:in `search'
        from /var/www/cgi/lib/models/store/store.rb:102:in `search'
        from (irb):7
        from /usr/local/bin/irb:12:in `<main>'irb(main):008:0>

I also tried specifying the relationships explicitly, like so:
AndroidAppAndroidQuery.create(:android_query => query, :android_app =>
query.android_apps[index])

But this results with that same error. Changing insert method to [ ]
results in that same error.

Any suggestions on how I can overcome this in a proper way?

Thanks!

-- 
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