【发布时间】:2014-09-01 15:45:50
【问题描述】:
当保存具有 3 层嵌套的文档时,子对象保存在错误的父对象下:
user = User.create
website = user.websites.create
post = website.posts.create
post2 = website.posts.create
post.images.create
post2.images.create
puts "#{user.to_json}"
puts "#{user.reload.to_json}"
每个帖子都应该有一个图像,这在脏用户对象 (user.to_json) 上是正确的 => https://gist.github.com/vdaubry/cdc465d6d5ef84576830
但是当我重新加载用户时,所有图像都嵌入在第一个帖子下(user.reload.to_json) => https://gist.github.com/vdaubry/a9c217a467dd9ff9a7fb
这是一个错误还是我遗漏了一些明显的东西?
这里是用来重现这个的类定义:
class User
include Mongoid::Document
embeds_many :websites
end
class Website
include Mongoid::Document
include Mongoid::Timestamps
embedded_in :user
embeds_many :posts
end
class Post
include Mongoid::Document
include Mongoid::Timestamps
embedded_in :website
embeds_many :images
end
class Image
include Mongoid::Document
include Mongoid::Timestamps
embedded_in :post
end
我的宝石文件:
ruby 2.1.2p95
gem 'rails', '~> 4.1.4'
gem 'mongoid', '~> 4.0.0'
【问题讨论】:
标签: ruby-on-rails mongodb mongoid