我无法在数据库中创建一行。 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
显示确实没有添加任何条目。如何判断交易被拒绝的原因?
答案 0 :(得分:10)
您可以在save
或valid?
billing_name = BillingName.new
billing_name.save # or billing_name.valid?
puts billing_name.errors.inspect
答案 1 :(得分:4)
这些都是很好的答案,可以帮助您通过检查模型找到错误。我也用它们。
但我发现ActiveRecord并不总是提供有用的信息,特别是在回调中。 valid?
将为true,错误将为空,并且除了回滚之外,控制台不会显示任何内容。所以,一个好看的地方就是那些回调中发生的事情,特别是before_create过滤器。