Yeah, I could do that and did previously. It's just an overhead that shouldn't be there.
Thanks for the reply! On Nov 8, 1:40 am, Chris Corbyn <[email protected]> wrote: > Can you just collect the objects into a generic data structure like an Array, > then order them manually before actually associating them? > > PS: I can't help but think that your model name "Query" is going to bite you > at some point ;) Model.query, and Collection#query are methods used by > DataMapper, if you happen to have a "belongs_to :query" or a "has 1, :query" > anywhere ;) > > On 08/11/2011, at 3:00 PM, Mateusz Wielgos wrote: > > > > > > > > > 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 > > 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.
