Ruby on rails 在ruby on rails中保存错误后

Ruby on rails 在ruby on rails中保存错误后,ruby-on-rails,ruby-on-rails-3,activerecord,model,Ruby On Rails,Ruby On Rails 3,Activerecord,Model,我有两个相互链接的模型,我正在尝试在模型中进行保存、创建,代码如下 class CustomerBill < ActiveRecord::Base after_save :updating_and_creating_ledger_items has_many :customer_ledgers, :dependent => :destroy def updating_and_creating_ledger_items CustomerLedger.create(

我有两个相互链接的模型,我正在尝试在模型中进行保存、创建,代码如下

class CustomerBill < ActiveRecord::Base
  after_save :updating_and_creating_ledger_items
  has_many :customer_ledgers, :dependent => :destroy

  def updating_and_creating_ledger_items
    CustomerLedger.create(:date => self.date, :customer_id => self.customer_id, :user_id => self.user_id)
  end
end
class CustomerBill:销毁
def更新和创建分类帐项目
创建(:date=>self.date,:customer\u id=>self.customer\u id,:user\u id=>self.user\u id)
结束
结束
客户分类账模型

class CustomerLedger < ActiveRecord::Base
  belongs_to :customer_bill,  :foreign_key => "customer_bill_id"
end
class CustomerLedger“客户账单id”
结束
现在的问题是程序执行得很好,但是值没有被放入数据库。如果我检查客户分类账,它仍然是空的

没有存储这些值。有什么问题吗?对这一问题的指导将是有益的


提前感谢。:)

您没有在
创建
中设置
客户账单id
,请将
创建
更改为
生成
,如下所示:

customer_ledger.build(:date => self.date, :customer_id => self.customer_id, :user_id => self.user_id)

In customer_bill.rb

试一试

为进行编辑要避免验证,请使用

ledger = customer_ledgers.build(:date => self.date, :customer_id => self.customer_id, :user_id => self.user_id)
ledger.save(:validate => false)

customerLeader
可能未通过验证检查。替换:

def updating_and_creating_ledger_items
  CustomerLedger.create(:date => self.date, :customer_id => self.customer_id, :user_id => self.user_id)
end
与:


尝试将create更改为create!让我知道我创作的时候发生了什么!表单没有保存,它进入编辑状态,我收到了一个错误,因为我提交时找不到id=30的CustomerBill,现在我添加了:customer\u bill\u id=>self.id,表单没有保存。。!!我在未定义的方法“build”中遇到了以下错误,我尝试了这个方法。代码执行正确,但分类账表仍然为空..:( :(没有得到问题的答案。只是好奇,当你已经将
日期、客户id、用户id
存储在
CustomerEdge
中,而你已经将其保存在
CustomerBill
中,并且这两者之间存在关联时,为什么你要将
日期、客户id、用户id
存储在
CustomerEdge
中?实际上,我在计算和存储账单总额、到期金额和st时,这是一个复杂的代码uff…但为了确定问题,我简化了代码…只保留了一行创建选项。关联是分类账属于bill,bill有许多分类账。现在我添加了关联的验证。那么,您在CustomerEdge中有任何验证吗?可能b验证未通过,因此无法保存。请重试ledger.save(:validate=>false)@sail-非常感谢…验证导致了问题…只需更新您的答案,以便其他人知道…:)谢谢您,迈克…我错过了验证false选项…因此我得到了问题…现在它工作正常。:)
ledger = customer_ledgers.build(:date => self.date, :customer_id => self.customer_id, :user_id => self.user_id)
ledger.save(:validate => false)
def updating_and_creating_ledger_items
  CustomerLedger.create(:date => self.date, :customer_id => self.customer_id, :user_id => self.user_id)
end
def updating_and_creating_ledger_items
  ledger = customer_ledgers.build(:date => self.date, :customer_id => self.customer_id, :user_id => self.user_id)
  ledger.save(:validate => false)
end