有没有人知道如何在rails中挽救这个ActiveRecord :: StatementInvalid错误?控制台显示“PG :: InvalidTextRepresentation:ERROR:整数...的无效输入语法”。我已经尝试在救援区插入一个撬,但它从未被调用过。
if (resource_params[:term].present?)
begin
key = resource_params[:term]
scope = scope.where("id = ? OR item_type = ? OR item_id = ? OR event = ? OR object ILIKE ?", key, key, key, key, "%#{key}%")
rescue
# handle error
end
end
请注意我知道如何防止错误发生(即需要将密钥转换为id列的整数类型)。但是,我试图理解为什么它永远不会到达救援区。
更新:我的初始帖子包含语法错误(即:rescue e =>错误),正如其他人正确指出的那样。我仍然收到相同的错误,没有语法错误;我更新了代码以删除不正确的语法。
答案 0 :(得分:4)
这不是救援的正确语法:
print
如果我尝试使用此功能,我会rescue e => error
拯救特定错误类的标准方法是使用:
undefined local variable or method 'e'
做一次"裸体救援" (通常建议不要这样做),遗漏班级名称:
rescue ActiveRecord::StatementInvalid => e
请注意,在所有这些情况下,如果您不需要指向错误对象的变量,则可以省略rescue => e
。
答案 1 :(得分:0)
rescue ActiveRecord::StatementInvalid => e
是正确的语法,应该可以正常工作,但请记住,实际上应该在该块中引发异常。
rails会执行查询(例如,我们显示查询输出的呈现页面)。