Вы должны ловить любые ошибки, выдаваемые Rails, поскольку ни одна из них не предназначена для работы с пользователем ... Когда исключение всплывает до ответа HTTP, оно всегда будет проявляться как HTTP 500.
Что совершенно нормально, так это перехватить исключительную ситуацию и обработать ее, установив статус HTTP на 404 и выдав свою собственную ошибку, возможно, говорящую «мы искали это, но ничего не нашли». Или, если безопасность вызывает беспокойство, просто скажите «не найден» действительно причудливым способом.