Skip to content

Instantly share code, notes, and snippets.

@dbackeus
Created August 22, 2011 09:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save dbackeus/1162014 to your computer and use it in GitHub Desktop.
Save dbackeus/1162014 to your computer and use it in GitHub Desktop.
Referenced document frozen on childs after_destroy callback
class Parent
include Mongoid::Document
field :something, :type => String
has_many :children
after_create :create_child
private
def create_child
children.create
end
end
class Child
include Mongoid::Document
belongs_to :parent
after_destroy :update_parent
private
def update_parent
parent.update_attributes(:something => "value")
end
end
Parent.create.children.first.destroy
@dbackeus
Copy link
Author

/Users/druiden/.rvm/gems/ruby-1.9.2-p290/gems/mongoid-2.1.9/lib/mongoid/attributes.rb:100:in `[]=': can't modify frozen hash (RuntimeError)
    from /Users/druiden/.rvm/gems/ruby-1.9.2-p290/gems/mongoid-2.1.9/lib/mongoid/attributes.rb:100:in `block in write_attribute'
    from /Users/druiden/.rvm/gems/ruby-1.9.2-p290/gems/mongoid-2.1.9/lib/mongoid/attributes.rb:96:in `tap'
    from /Users/druiden/.rvm/gems/ruby-1.9.2-p290/gems/mongoid-2.1.9/lib/mongoid/attributes.rb:96:in `write_attribute'
    from /Users/druiden/.rvm/gems/ruby-1.9.2-p290/gems/mongoid-2.1.9/lib/mongoid/fields.rb:275:in `block (2 levels) in create_accessors'
    from /Users/druiden/.rvm/gems/ruby-1.9.2-p290/gems/mongoid-2.1.9/lib/mongoid/relations/bindings/referenced/in.rb:25:in `block in bind'
    from /Users/druiden/.rvm/gems/ruby-1.9.2-p290/gems/mongoid-2.1.9/lib/mongoid/relations/binding.rb:21:in `binding'
    from /Users/druiden/.rvm/gems/ruby-1.9.2-p290/gems/mongoid-2.1.9/lib/mongoid/relations/bindings/referenced/in.rb:23:in `bind'
    from /Users/druiden/.rvm/gems/ruby-1.9.2-p290/gems/mongoid-2.1.9/lib/mongoid/relations/proxy.rb:15:in `bind_one'
    from /Users/druiden/.rvm/gems/ruby-1.9.2-p290/gems/mongoid-2.1.9/lib/mongoid/relations/referenced/in.rb:24:in `block in initialize'
    from /Users/druiden/.rvm/gems/ruby-1.9.2-p290/gems/mongoid-2.1.9/lib/mongoid/relations/proxy.rb:34:in `init'
    from /Users/druiden/.rvm/gems/ruby-1.9.2-p290/gems/mongoid-2.1.9/lib/mongoid/relations/referenced/in.rb:22:in `initialize'
    from /Users/druiden/.rvm/gems/ruby-1.9.2-p290/gems/mongoid-2.1.9/lib/mongoid/relations/accessors.rb:44:in `new'
    from /Users/druiden/.rvm/gems/ruby-1.9.2-p290/gems/mongoid-2.1.9/lib/mongoid/relations/accessors.rb:44:in `create_relation'
    from /Users/druiden/.rvm/gems/ruby-1.9.2-p290/gems/mongoid-2.1.9/lib/mongoid/relations/accessors.rb:26:in `build'
    from /Users/druiden/.rvm/gems/ruby-1.9.2-p290/gems/mongoid-2.1.9/lib/mongoid/relations/accessors.rb:100:in `block (3 levels) in getter'
    from /Users/druiden/.rvm/gems/ruby-1.9.2-p290/gems/mongoid-2.1.9/lib/mongoid/relations/builders.rb:47:in `building'
    from /Users/druiden/.rvm/gems/ruby-1.9.2-p290/gems/mongoid-2.1.9/lib/mongoid/relations/accessors.rb:99:in `block (2 levels) in getter'
    from playground/mongoid-tester.rb:25:in `update_parent'
    from /Users/druiden/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.0.rc5/lib/active_support/callbacks.rb:392:in `_run_destroy_callbacks'
    from /Users/druiden/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.0.rc5/lib/active_support/callbacks.rb:81:in `run_callbacks'
    from /Users/druiden/.rvm/gems/ruby-1.9.2-p290/gems/mongoid-2.1.9/lib/mongoid/persistence.rb:31:in `destroy'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment