Ruby on rails rails mongoid:如何在assign_属性上启用嵌套_属性的持久性

Ruby on rails rails mongoid:如何在assign_属性上启用嵌套_属性的持久性,ruby-on-rails,mongoid,persistence,Ruby On Rails,Mongoid,Persistence,下面是一些简化的代码: class Page include Mongoid::Document has_many :content, class_name: 'Content', dependent: destroy, autosave: false accepts_nested_attributes_for :content field :title, type: String end class Content include Mongoid::Document

下面是一些简化的代码:

class Page
  include Mongoid::Document
  has_many :content, class_name: 'Content', dependent: destroy, autosave: false
  accepts_nested_attributes_for :content
  field :title, type: String
end

class Content
  include Mongoid::Document
  belongs_to :page
  field :text, type: String
end

class PagesController < ApplicationController
  def update
    @page = Page.unscoped.find(params['id'])
    @page.assign_attributes params.require(:page)

    puts @page.reflect_on_association(:content)
    # {:relation=>Mongoid::Relations::Referenced::Many, :extend=>nil, :inverse_class_name=>"Page", :name=>:content, :class_name=>"Content", :dependent=>:destroy, :autosave=>false, :validate=>true}
  end
end
我有一个控制器规范,它从工厂创建页面和相关内容,并尝试修补页面。无论我在页面参数中发送什么,只要标题或内容属性,它都不会保存任何内容,正如预期的那样

如果我在dev中测试这一点,当参数仅由Page.title组成时,不会更新任何内容;如果参数中有content attributes数组,则会更新内容

我唯一想做的就是为页面和相关对象分配新的参数,然后在以后手动持久化或拒绝。我做错了什么

轨道4.1.9 mongoid~>4.0.0 ===

更新:


在我的真实项目内容模型中,字段:文本是本地化的;在我将其更改为一个简单的字符串字段后,即使autosave为false且从未调用过save,规范也会失败并保留该字段。

尝试将validates\u associated:page添加到内容模型