私はRubyを初めて使用し、最近、RubyonRailsアプリケーションを作成するときに値と比較する際に問題が発生しました。コントローラーで、常にfalseを返す次のステートメントがありました。
if (user.id != params[:id])
問題は、user.id(アクティブレコード)が整数であり、params [:id]が文字列であるということでした。これを理解するのに少し時間がかかり、ついに次のように変更しました。
if (user.id != params[:id].to_i)
これで、ステートメントは期待どおりに機能します。
将来このエラーを回避するために、2つの異なるタイプを比較しようとした場合に、Rubyに「コンパイル」または警告を表示させる方法はありますか?私が「コンパイルチェック」したい他のいくつかの問題に遭遇しました:
- 変数を作成したが使用しない場合は警告します。変数名のタイプミスをチェックするのに役立ちます。
- メソッドがクラスに存在することを確認して、メソッド名のタイプミスを回避し、たとえばメソッドの名前を変更した場合などにリファクタリングを支援できるようにします。
私は現在、Ruby1.8.6-27RC2とRails2.3.2およびRadRailsIDEをWindowsで使用しています。