1
我是很新的MongoDB和我使用西纳特拉和mongomapper与以下设置更新嵌入文档的值:Mongomapper嵌入文档“无法序列化对象”错误
class TeamMember
include MongoMapper::Document
key :name, String, :required => true
many :team_member_projects
end
class TeamMemberProject
include MongoMapper::EmbeddedDocument
key :date, Date, :required => true
one :project
end
class Project
include MongoMapper::Document
key :name, String, :required => true
end
的修改代码:
team_member = TeamMember.find(params[:team_member])
project = Project.find(params[:project])
date = Date.parse(params[:date])
tm_project = TeamMemberProject.new(:project => project, :date => date)
team_member.push(:team_member_projects => tm_project)
team_member.save
,但我得到的错误.push
行:
BSON::InvalidDocument at /project/add
Cannot serialize an object of class TeamMemberProject into BSON.
我没有正确声明我的嵌入式文档吗?或者还有另一种更新嵌入式文档的方式,我不知道。我试图使用方法:http://mongomapper.com/documentation/plugins/modifiers.html#push
我注意到同样的事情......可能是一个错误。我会在github上报告该项目的一个,看看他们说了些什么。 –
我不确定这是一个错误。修饰符只是简单的,方便MongoDB修饰符的包装。修饰符甚至不更新Ruby中的相关文档,他们直接进入数据库。所以,“.push”不会意识到MongoMapper关联。 'team_member.push(:team_member_projects => tm_project.to_mongo)'虽然可以工作。 –