I run a sinatra application with mongomapper. I have models called Movie(Document) and Cover(EmbeddedDocument). I embed covers into movies using
@movie.covers << @cover
@movie.save
This works great.
When I hit @movies.covers, I got the array of embedded documents. But I am not able to destroy the embedded document. I tried something like this:
@movie.covers.each do |c|
c.destroy
end
NoMethodError: undefined method `destroy' for #<Cover:0xb7b20734>
from (irb):5
from /usr/lib/ruby/gems/1.8/gems/mongo_mapper-0.6.8/lib/mongo_mapper/associations/proxy.rb:85:in `call'
from /usr/lib/ruby/gems/1.8/gems/mongo_mapper-0.6.8/lib/mongo_mapper/associations/proxy.rb:85:in `method_missing'
from /usr/lib/ruby/gems/1.8/gems/mongo_mapper-0.6.8/lib/mongo_mapper/associations/proxy.rb:85:in `each'
from /usr/lib/ruby/gems/1.8/gems/mongo_mapper-0.6.8/lib/mongo_mapper/associations/proxy.rb:85:in `send'
from /usr/lib/ruby/gems/1.8/gems/mongo_mapper-0.6.8/lib/mongo_mapper/associations/proxy.rb:85:in `method_missing'
from (irb):4
from :0
How to destroy it? It would be great if someone enlightens me how to update the embedded document.
Covers are stored as an array within movie object, therefore you can do e.g.:
@movie.covers.clear
@movie.save
or if you want to be selective
@movie.covers.delete_if {|cover| cover.name == "bla"}
@movie.save
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With