2013-10-14 20 views
0

保存过程中出现错误!的一个对象,我得到一个奇怪的“ArgumentError - 错误的参数数量(1为0)”错误。调试导致文件Ruby1.9.3/lib/ruby​​/gems/1.9.1/gems/activerecord-3.2.14/lib/active_record/transactions.rb中的方法with_transaction_returning_status,其中self.class.transaction结果为零,这似乎很奇怪。跨越self.class.transaction行会导致错误发生。任何想法为什么这可能出错?保存期间“with_transaction_returning_status”中的错误

def with_transaction_returning_status 
    status = nil 
    self.class.transaction do 
    add_to_transaction 
    status = yield 
    raise ActiveRecord::Rollback unless status 
    end 
    status 
end 
+0

有太多可能的原因...发布一些上下文(您执行的代码)和错误消息(包括行的完整堆栈跟踪将是一件好事 - 值)。 – phoet

+0

@phoet:无需再寻找解决方案。通过覆盖BigDecimal的to_s方法,导致上述情况变成了一场噩梦似乎是一个好主意,因为在输入字段中使用','作为分隔符,导致上述情况...移除了to_s覆盖,问题消失了。 .. – Danny

+0

你应该回答你自己的问题,以便其他人不必再看它 – phoet

回答

0

非的问题:什么似乎是一个好主意,让一个“”作为分隔符输入字段中,通过重写to_s方法的BigDecimal竟然变成了一场噩梦,导致上述.. 。删除了to_s覆盖,并且问题消失了...