当rails保存嵌套属性时,避免回滚

时间:2015-02-04 11:03:15

标签: ruby-on-rails-3.2

模型整体交易

  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

应该创建的每个产品。这里有什么遗漏/错误? (rails 3.2.21)

2 个答案:

答案 0 :(得分:0)

您必须在整体交易中允许嵌套属性,如

  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])

因为我有照片&位置嵌套属性。

答案 1 :(得分:0)

整体交易和交易是相当类似的类,它们也有类似的验证。 ROLLBACK正在启动,因为未能满足儿童记录的其中一项验证。