我使用 Eloquent Ruby 一书中阐述的围绕设计模式执行设计模式来记录我的 rails 应用程序中的验证错误。
我正在使用以下方法捕获错误:
@o.errors.full_messages #{:first_name=>["can't be blank"]}
然后将它们持久化到日志表中,但我还想捕获导致错误的实际方法/代码。例如:
User.create(:last_name => "Doe")
如何捕获导致错误的方法,以便我可以将其记录到我的验证日志表中。
我使用 Eloquent Ruby 一书中阐述的围绕设计模式执行设计模式来记录我的 rails 应用程序中的验证错误。
我正在使用以下方法捕获错误:
@o.errors.full_messages #{:first_name=>["can't be blank"]}
然后将它们持久化到日志表中,但我还想捕获导致错误的实际方法/代码。例如:
User.create(:last_name => "Doe")
如何捕获导致错误的方法,以便我可以将其记录到我的验证日志表中。
对于rails 3.2,不确定这是否是您所需要的:
irb(main):008:0> user = User.create()
然后从中获取错误:
irb(main):009:0> user.errors
=> #<ActiveModel::Errors:0xaa84c60 @base=#<User id: nil, email: "", encrypted_password: "", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, created_at: nil, updated_at: nil, first_name: nil, last_name: nil, role: "user", approved: false>, @messages={:email=>["can't be blank"], :password=>["can't be blank"]}>
他们在响应的末尾。
您还可以在创建操作时调用错误,而无需将用户保存到变量中:
irb(main):010:0> User.create().errors
(0.3ms) BEGIN
(0.1ms) ROLLBACK
=> #<ActiveModel::Errors:0xa390d78 @base=#<User id: nil, email: "", encrypted_password: "", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, created_at: nil, updated_at: nil, first_name: nil, last_name: nil, role: "user", approved: false>, @messages={:email=>["can't be blank"], :password=>["can't be blank"]}>
最后你得到相同的哈希错误:
@messages={:email=>["can't be blank"], :password=>["can't be blank"]}