【问题标题】:When I save a nested model changing only file field, save event didn't trigger当我保存嵌套模型仅更改文件字段时,未触发保存事件
【发布时间】:2013-02-06 21:57:40
【问题描述】:

我正在使用 rails 3.2.11、mongoid 3.0.18、carrierwave (0.7.1) 和carrierwave-mongoid (0.3.0)

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

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

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

【问题讨论】:

    标签: ruby-on-rails mongoid carrierwave nested-forms


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-11
      • 1970-01-01
      • 2019-11-14
      • 1970-01-01
      • 2015-07-18
      • 2012-12-22
      • 1970-01-01
      相关资源
      最近更新 更多