Suppress an error when saving a record in Rails
我正在将数据保存到表中。
1 2 3 4 5 | Question title:string author_id:integer description:text upvotes:integer |
如果"question.upvotes"值为1000000000000000000000,则会导致错误,因为它无法保存到"整数"类型列。
如何抑制此错误? 我希望我的程序继续运行,即使记录无法保存。
我试过这个,但它没有抑制错误:
1 2 3 4 5 6 | ... some code if my_question.save end some more code... |
或许只是把这个价值固定到最大可能值? 将这样的内容添加到
1 2 3 4 5 6 7 8 | # app/models/question.rb UPVOTE_MAX_VALUE = 2_147_483_647 # integer max value in postgresql before_validation :check_upvote_max_size private def check_upvotes_max_size self.upvotes = UPVOTE_MAX_VALUE if upvotes > UPVOTE_MAX_VALUE end |
1 2 3 4 5 6 7 8 9 10 11 | ... some code begin if my_question.save ... end rescue # error handling end some more code ... |
您收到
1 | rescue ActiveRecord::StatementInvalid |
你也可以添加一个总是会执行的块
1 | ensure |
您可以在此处找到有关异常处理的更多信息/此处查看异常层次结构