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添加到内容模型