ИМХО, не должны валиться ошибки на уровне БД. БД - это последний рубеж, и возникновение ошибок на ее уровне - это просчет в логике приложения. Почему бы не использовать валидации?
begin
# здесь находится AR запрос ...
rescue ActiveRecord::StatementInvalid => e
render( json: { message: "ActiveRecord::StatementInvalid error: #{e.message}" }, status: :bad_request )
return
end