4

我无法在数据库中创建一行。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显示确实没有添加条目。如何判断交易被拒绝的原因?

4

2 回答 2

12

您可以在 asavevalid?

billing_name = BillingName.new
billing_name.save # or billing_name.valid?
puts billing_name.errors.inspect
于 2013-06-18T19:34:23.823 回答
5

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

但我发现 ActiveRecord 并不总是提供有用的信息,尤其是在回调中。valid?将是真的,错误将是空的,控制台除了回滚不会显示任何东西。因此,一个很好的地方是查看这些回调中发生了什么,特别是 before_create 过滤器。

于 2013-08-12T23:49:02.997 回答