ruby-on-rails – 如何在Mongoid中保存embeds_many关系?
class Hotel include Mongoid::Document field :title,type: String embeds_many :comments end class Comment include Mongoid::Document field :text,type: String belongs_to :hotel validates :text,presence: true end h = Hotel.create('hotel') => <#Hotel _id: 52d68dd47361731d8b000000,title: "hotel"> c = Comment.new(text: 'text') => <#Comment _id: 52d68f3d7361731d8b040000,text: "text",hotel_id: nil> h.comments << c => [#<Comment _id: 52d68f3d7361731d8b040000,hotel_id: nil>] h.save => true Hotel.last.comments => [] 变种2 h.comments << Comment.new(text: 'new',hotel_id: h.id) => [<#Comment _id: 52d68f3d7361731d8b040000,hotel_id: nil>,<#Comment _id: 52d691e17361731d8b050000,text: "new",hotel_id: BSON::ObjectId('52d68dd47361731d8b000000')>] h.save => true Hotel.last.comments => [] 解决方法
我看到两个可能的问题:
> Hotel.last不一定是Hotel 52d68dd47361731d8b000000.你应该看看h.comments或者是偏执狂,h.reload和h.comments. 从fine manual:
所以你的关系应该像这样定义: class Hotel embeds_many :comments end class Comment embedded_in :hotel end 你应该说embedded_in:hotel,你在评论中使用belongs_to:hotel. 文档还说:
并且您的关系在一侧配置不正确,因此无法正常工作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |