如何删除mongomapper中的嵌入文档?

Dee*_*pak 8 ruby-on-rails sinatra mongomapper

嗨大家我用mongomapper运行sinatra应用程序.我有一些名为Movie(Document)和Cover(EmbeddedDocument)的模型.我将封面嵌入到电影中

@movie.covers << @cover
@movie.save
Run Code Online (Sandbox Code Playgroud)

这非常有效.当点击@ movies.covers时,我得到了一系列嵌入式文档.但我无法破坏嵌入式文档.我试过这样的事

@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
Run Code Online (Sandbox Code Playgroud)

任何人都可以如何摧毁它?如果有人启发我如何更新嵌入式文档会很棒.

Pio*_*rek 15

封面存储为电影对象中的数组,因此您可以执行以下操作:

@movie.covers.clear
@movie.save
Run Code Online (Sandbox Code Playgroud)

或者如果你想要有选择性

@movie.covers.delete_if {|cover| cover.name == "bla"}
@movie.save
Run Code Online (Sandbox Code Playgroud)