自动回滚没有任何错误?

Ya.*_*Ya. 4 activerecord ruby-on-rails rollback

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

  logger.debug("creating billing name...")
  BillingName.create() #also tried BillingName.new.save
  logger.debug("...created")
Run Code Online (Sandbox Code Playgroud)

日志文件:

 creating billing name...
 ^[[1m^[[36m (0.1ms)^[[0m  ^[[1mbegin transaction^[[0m
 ^[[1m^[[35m (0.1ms)^[[0m  rollback transaction
 ...created
Run Code Online (Sandbox Code Playgroud)

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

spu*_*len 10

您可以在save或之后检查错误valid?

billing_name = BillingName.new
billing_name.save # or billing_name.valid?
puts billing_name.errors.inspect
Run Code Online (Sandbox Code Playgroud)

  • 此外,`billing_name.errors.full_messages` 将以更好的格式为您提供错误数组。 (2认同)

IAm*_*NaN 5

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

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