Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 当我保存仅更改文件字段的嵌套模型时,不会触发保存事件_Ruby On Rails_Mongoid_Carrierwave_Nested Forms - Fatal编程技术网

Ruby on rails 当我保存仅更改文件字段的嵌套模型时,不会触发保存事件

Ruby on rails 当我保存仅更改文件字段的嵌套模型时,不会触发保存事件,ruby-on-rails,mongoid,carrierwave,nested-forms,Ruby On Rails,Mongoid,Carrierwave,Nested Forms,我使用的是rails 3.2.11、mongoid 3.0.18、carrierwave 0.7.1和carrierwave mongoid 0.3.0 两种型号:产品有许多组件。组件有一个文件字段。我使用gem嵌套表单在产品页面上添加许多组件表单 class Product include Mongoid::Document include Mongoid::Timestamps field :title field :image embeds_many :compon

我使用的是rails 3.2.11、mongoid 3.0.18、carrierwave 0.7.1和carrierwave mongoid 0.3.0

两种型号:产品有许多组件。组件有一个文件字段。我使用gem嵌套表单在产品页面上添加许多组件表单

class Product
  include Mongoid::Document
  include Mongoid::Timestamps

  field :title
  field :image

  embeds_many :components, cascade_callbacks: true
  accepts_nested_attributes_for :components, allow_destroy: true
end

class Component
  include Mongoid::Document
  include Mongoid::Timestamps
  field :title
  field :author
  field :file

  embedded_in :product

  mount_uploader :file, BaseFileUploader
end
控制器:

class ProductsController < BaseController

  def update
    resource = Product.find(params[:id])
    if resource.update_attributes(params[:product])      
      redirect_to collection_path
    else
      resource.components.build unless resource.components # there should be always one component
      render :edit
    end
  end
end
当我改变的时候!此字段的值只有一个文件字段,没有对db的保存查询

但当我在控制器中添加力保存时

class ProductsController < BaseController

  def update
    resource = Product.find(params[:id])
    if resource.update_attributes(params[:product])
      resource.components.each do |component|
       component.save!
      end      
      redirect_to collection_path
    else
      resource.components.build unless resource.components # there should be always one component
      render :edit
    end
  end
end

而且它有效!你知道这是什么原因吗

我也看到了这个问题。如果我更新了另一个字段以及嵌入文档上的文件,则会触发上载。如果只是文件,什么也不会发生