Я новичок в Ruby и недавно столкнулся с проблемой сравнения значений при создании приложения Ruby on Rails. В контроллере у меня было следующее утверждение, которое всегда возвращало false:
if (user.id != params[:id])
Проблема в том, что user.id (который является активной записью) является целым числом, а params [: id] является строкой. Мне потребовалось некоторое время, чтобы понять это, и я наконец изменил это на:
if (user.id != params[:id].to_i)
Теперь оператор работает как положено.
Чтобы избежать этой ошибки в будущем, есть ли способ "скомпилировать" или заставить Ruby предупредить вас, если вы попытаетесь сравнить 2 разных типа? Некоторые другие проблемы, с которыми я столкнулся, которые я хотел бы «проверить при компиляции»:
- Предупредить меня, если я создам переменную, но не использую ее. Чтобы помочь проверить опечатки в именах переменных.
- Убедитесь, что метод существует в классе, чтобы я мог избежать опечаток имени метода, а также помочь в рефакторинге, например, если я переименую метод.
В настоящее время я использую Ruby 1.8.6-27 RC2 с Rails 2.3.2 и RadRails IDE для Windows.