rails 保存 nested_attributes 时避免回滚

Avoid rollback when rails saves nested_attributes

模型整体交易

  accepts_nested_attributes_for :transactions

  Overalltransaction::Transaction.class_eval do
    attr_accessible :product_id, :rate, [...], :transaction_attributes
  end

更新 评估添加到模型的嵌套属性

整体事务的创建动作控制器,

@overalltransaction = Overalltransaction.new(params[:overalltransaction])
@transaction_count = params[:product_ids].count
@overalltransaction.transactions.build
@transactions = session[:product_ids].map do |product_id|
  transaction = Transaction.new
  transaction.rate =  @price
  [...]
end

respond_to do |format|
  if @overalltransaction.save
    @transactions.each do |transaction|
      transaction.save
    end
    [...]
  end

当提交时间到来时,终端指示:

(1.9ms)  BEGIN
(1.8ms)  ROLLBACK

对于它应该创建的每个产品。这里的 missing/wrong 是什么? (rails 3.2.21)

您必须允许在 Overalltransaction 中嵌套属性,例如

  params.require(:company).permit(:linkedin, :twitter, :facebook, :name, :organization_type, :industry, :phone, :year, :website, :user_id, :vision, :picture_attributes=> [:id, :image,:image_crop_x, :image_crop_y, :image_crop_w, :image_crop_h, :picturable_id, :picturable_type], :locations_attributes=>[:id, :street_address, :city, :suite, :state, :zip, :phone ,:country, :headquarter, :company_id, :_destroy])

因为我有图片和位置嵌套属性。

Overalltransaction 和 Transaction 非常相似 类 它们也有相似的验证。 ROLLBACK 正在启动,因为未满足子记录的验证之一。