Как я удаляю встроенный документ в mongomapper?

Привет Парни я запускаю sinatra приложение с mongomapper. У меня есть модели под названием Фильм (Документ), и Покрытие (EmbeddedDocument).I встраивают покрытия в использование фильмов

@movie.covers << @cover
@movie.save

Это работает отлично. когда поражено @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

Может кто-либо temme, как уничтожить его? Было бы замечательно, если кто-то просвещает меня, как обновить встроенный документ.

8
задан Deepak 20 December 2009 в 14:37
поделиться

1 ответ

Обложки хранятся в виде массива внутри объекта фильма, поэтому вы можете сделать, например:

@movie.covers.clear
@movie.save

или, если вы хотите быть избирательным

@movie.covers.delete_if {|cover| cover.name == "bla"}
@movie.save
15
ответ дан 5 December 2019 в 10:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: