удаление вложенных документов с помощью mongoid - PullRequest
9 голосов
/ 02 ноября 2011

Я создаю свое первое приложение с помощью mongoid, и у меня возникают проблемы при удалении встроенного ресурса.У меня есть эти модели:

class Article
 include Mongoid::Document
 field :body
 embeds_many :comments

и т. Д.

class Comment
 include Mongoid::Document
 field :body
 embedded_in :article, :inverse_of => :comments
end

Я не понимаю, почему не могу удалить комментарий к статье

    ruby-1.9.2-p290 :043 > @article.comments
    => [#<Comment _id: 4eb0e991a27d201ded000038, _type: nil, body: "foo", score: nil>] 
    ruby-1.9.2-p290 :045 > @article.comments.first.destroy
    => true 
    ruby-1.9.2-p290 :046 > @article.comments
    => [] 
    ruby-1.9.2-p290 :047 > @article.save
    => true 
    ruby-1.9.2-p290 :049 > @article.reload
    => #<Article _id: 4eb0e991a27d201ded000037, _type: nil, body: "foo", title: .... 
    ruby-1.9.2-p290 :050 > @article.comments
    => [#<Comment _id: 4eb0e991a27d201ded000038, _type: nil, body: "foo", score: nil>] 

Вызовуничтожить (или удалить) во встроенном документе, кажется, чтобы удалить его в памяти, но не из БД.Любое понимание будет очень ценится!

1 Ответ

0 голосов
/ 29 апреля 2012

Пожалуйста, опубликуйте свою версию рельсов и версии ваших драгоценных камней. Я проверил ваши настройки с помощью направляющих 3.2.3:

Loading development environment (Rails 3.2.3)
1.9.3-p0 :001 > @article = Article.new(:body => 'articleBodyText')
 => #<Article _id: 4f9d90c7f15fefb3a0000001, _type: nil, body: "articleBodyText"> 
1.9.3-p0 :002 > @article.save
 => true 
1.9.3-p0 :003 > @article.comments = [Comment.new(:body => 'commentBodyText')]
 => [#<Comment _id: 4f9d90edf15fefb3a0000002, _type: nil, body: "commentBodyText">] 
1.9.3-p0 :004 > @article.save
 => true 
1.9.3-p0 :005 > @article.comments
 => [#<Comment _id: 4f9d90edf15fefb3a0000002, _type: nil, body: "commentBodyText">] 
1.9.3-p0 :006 > @article.reload
 => #<Article _id: 4f9d90c7f15fefb3a0000001, _type: nil, body: "articleBodyText"> 
1.9.3-p0 :007 > @article.comments
 => [#<Comment _id: 4f9d90edf15fefb3a0000002, _type: nil, body: "commentBodyText">] 
1.9.3-p0 :008 > @article.comments.first.destroy
 => true 
1.9.3-p0 :009 > @article.comments
 => [] 
1.9.3-p0 :010 > @article.save
 => true 
1.9.3-p0 :011 > @article.reload
 => #<Article _id: 4f9d90c7f15fefb3a0000001, _type: nil, body: "articleBodyText"> 
1.9.3-p0 :012 > @article.comments
 => [] 
1.9.3-p0 :013 > 

Соответствующие части Gemfile:

gem "mongoid", "~> 2.4"
gem "bson_ext", "~> 1.5"

Соответствующие части Gemfile.lock:

rails (3.2.3)
mongo (1.6.2)
mongoid (2.4.8)
bson (1.6.2)
bson_ext (1.6.2)
...