-
Type: Task
-
Resolution: Done
-
Affects Version/s: None
-
Component/s: None
-
Labels:None
I'm having strange error after upgrading from beta20 to rc7, where I have a Spot collection that has votes as embedded collections, at the same time, a vote is referenced in one user, Now:
> s = Spot.first
=> #<Spot _id: .....>
> s.votes
=> []
> u = User.first
=> #<User _id: .....>
So far, things are normal, but when building the association:
> s.votes.build(:vote=>1,:user=>u)
Mongoid::Errors::InvalidCollection: Access to the collection for Vote is not allowed since it is an embedded document, please access a collection from the root document.
.rvm/gems/ruby-1.9.2-p0/gems/mongoid-2.0.0.rc.7/lib/mongoid/collections.rb:21:in `collection'
.rvm/gems/ruby-1.9.2-p0/gems/mongoid-2.0.0.rc.7/lib/mongoid/contexts/mongo.rb:126:in `execute'
.rvm/gems/ruby-1.9.2-p0/gems/mongoid-2.0.0.rc.7/lib/mongoid/contexts/mongo.rb:185:in `iterate'
.rvm/gems/ruby-1.9.2-p0/gems/mongoid-2.0.0.rc.7/lib/mongoid/criteria.rb:109:in `block in each'
.rvm/gems/ruby-1.9.2-p0/gems/mongoid-2.0.0.rc.7/lib/mongoid/criteria.rb:109:in `tap'
.rvm/gems/ruby-1.9.2-p0/gems/mongoid-2.0.0.rc.7/lib/mongoid/criteria.rb:109:in `each'
.rvm/gems/ruby-1.9.2-p0/gems/mongoid-2.0.0.rc.7/lib/mongoid/relations/referenced/many.rb:187:in `entries'
.rvm/gems/ruby-1.9.2-p0/gems/mongoid-2.0.0.rc.7/lib/mongoid/relations/referenced/many.rb:187:in `block in load!'
.rvm/gems/ruby-1.9.2-p0/gems/mongoid-2.0.0.rc.7/lib/mongoid/relations/referenced/many.rb:185:in `tap'
.rvm/gems/ruby-1.9.2-p0/gems/mongoid-2.0.0.rc.7/lib/mongoid/relations/referenced/many.rb:185:in `load!'
.rvm/gems/ruby-1.9.2-p0/gems/mongoid-2.0.0.rc.7/lib/mongoid/relations/referenced/many.rb:264:in `append'
.rvm/gems/ruby-1.9.2-p0/gems/mongoid-2.0.0.rc.7/lib/mongoid/relations/many.rb:26:in `block in <<'
.rvm/gems/ruby-1.9.2-p0/gems/mongoid-2.0.0.rc.7/lib/mongoid/relations/many.rb:24:in `each'
.rvm/gems/ruby-1.9.2-p0/gems/mongoid-2.0.0.rc.7/lib/mongoid/relations/many.rb:24:in `<<'
.rvm/gems/ruby-1.9.2-p0/gems/mongoid-2.0.0.rc.7/lib/mongoid/relations/bindings/referenced/in.rb:36:in `bind'
.rvm/gems/ruby-1.9.2-p0/gems/mongoid-2.0.0.rc.7/lib/mongoid/relations/referenced/in.rb:30:in `bind'
... 7 levels...
.rvm/gems/ruby-1.9.2-p0/gems/mongoid-2.0.0.rc.7/lib/mongoid/attributes/processing.rb:135:in `block in process_relations'
.rvm/gems/ruby-1.9.2-p0/gems/mongoid-2.0.0.rc.7/lib/mongoid/attributes/processing.rb:130:in `each_pair'
.rvm/gems/ruby-1.9.2-p0/gems/mongoid-2.0.0.rc.7/lib/mongoid/attributes/processing.rb:130:in `process_relations'
.rvm/gems/ruby-1.9.2-p0/gems/mongoid-2.0.0.rc.7/lib/mongoid/attributes/processing.rb:118:in `process_pending'
.rvm/gems/ruby-1.9.2-p0/gems/mongoid-2.0.0.rc.7/lib/mongoid/attributes/processing.rb:25:in `process'
.rvm/gems/ruby-1.9.2-p0/gems/mongoid-2.0.0.rc.7/lib/mongoid/multi_parameter_attributes.rb:59:in `process'
.rvm/gems/ruby-1.9.2-p0/gems/mongoid-2.0.0.rc.7/lib/mongoid/attributes.rb:169:in `write_attributes'
.rvm/gems/ruby-1.9.2-p0/gems/mongoid-2.0.0.rc.7/lib/mongoid/relations/many.rb:46:in `block in build'
.rvm/gems/ruby-1.9.2-p0/gems/mongoid-2.0.0.rc.7/lib/mongoid/relations/many.rb:44:in `tap'
.rvm/gems/ruby-1.9.2-p0/gems/mongoid-2.0.0.rc.7/lib/mongoid/relations/many.rb:44:in `build'
from (irb):3
.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.3/lib/rails/commands/console.rb:44:in `start'
.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.3/lib/rails/commands/console.rb:8:in `start'
.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.3/lib/rails/commands.rb:23:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'ruby-1.9.2-p0
Now trying:
> s.votes
=> [#<Vote _id: 4d53c91de1b4523765000001, created_at: nil, updated_at: nil, vote: 1, user_id: BSON::ObjectId('4d17c5cae1b4521ea0000003')>]
Returns the vote that I tried to build.
The same error happens when I try something like:
> v = s.votes.build(:vote=>1)
> v.user = User.first
Ideas?