自动回滚没有任何错误?

时间:2013-06-18 19:15:21

标签: ruby-on-rails activerecord rollback

我无法在数据库中创建一行。 Rails显然会启动,然后立即回滚事务而没有任何错误。我正在使用sqlite3。

  logger.debug("creating billing name...")
  BillingName.create() #also tried BillingName.new.save
  logger.debug("...created")

日志文件:

 creating billing name...
 ^[[1m^[[36m (0.1ms)^[[0m  ^[[1mbegin transaction^[[0m
 ^[[1m^[[35m (0.1ms)^[[0m  rollback transaction
 ...created

select * from billing_name显示确实没有添加任何条目。如何判断交易被拒绝的原因?

2 个答案:

答案 0 :(得分:10)

您可以在savevalid?

之后检查错误
billing_name = BillingName.new
billing_name.save # or billing_name.valid?
puts billing_name.errors.inspect

答案 1 :(得分:4)

这些都是很好的答案,可以帮助您通过检查模型找到错误。我也用它们。

但我发现ActiveRecord并不总是提供有用的信息,特别是在回调中。 valid?将为true,错误将为空,并且除了回滚之外,控制台不会显示任何内容。所以,一个好看的地方就是那些回调中发生的事情,特别是before_create过滤器。