Mongoid - 更新嵌套属性

时间:2012-02-06 08:17:35

标签: ruby-on-rails ruby mongodb mongoid

来自mongoid docs:

  

考虑一个有很多帖子的成员:

     

类成员包括Mongoid :: Document has_many:posts
  accepts_nested_attributes_for:posts end

     

您现在可以在关联的帖子模型上设置或更新属性   通过属性hash。

     

对于没有id密钥的每个哈希,新记录将是   实例化,除非哈希还包含一个_destroy键   评估为真。

     

params = {member:{name:“joe”,posts_attributes:[       {title:“Kari,令人敬畏的Ruby文档浏览器!” },       {title:“平等主义假设......”},       {title:“”,_ destroy:“1”}#这将被忽略]}}

     

member = Member.create(params ['member'])member.posts.length#=> 2   member.posts.first.title#=> 'Kari,令人敬畏的Ruby文档   浏览器! member.posts.second.title#=> '平等主义者   假设...'

有没有办法更新嵌套属性而不是创建呢?

1 个答案:

答案 0 :(得分:1)

它依赖于具有ID的嵌套文档。

例如,在Rails表单中,相应的属性字段(在您的情况下为posts_attributes)将作为表单的一部分传递。然后Rails使用 ID对元素进行更新,为没有 ID的创建更新。