Rubyを初めて、Ruby on Railsアプリケーションを作成するときに値と比較して問題が発生しました。私は常にfalseを返された次の文を持っていたコントローラで:構文Ruby on Railsアプリケーションのチェックまたはコンパイル
if (user.id != params[:id])
問題は(アクティブレコードである)user.idた整数とし、paramsです[:idが]文字列です。私はこれを理解するまでにしばらく時間がかかりました。
if (user.id != params[:id].to_i)
これで、この文は正常に動作します。
将来このエラーを回避するには、2つの異なるタイプを比較しようとすると「コンパイル」する方法やRubyに警告する方法がありますか?コンパイルチェックをしたいと思っている他の問題は次のとおりです。
- 変数を作成してもそれを使用しないと警告します。変数名のタイプミスを確認するのに役立ちます。
- クラスにメソッドが存在するようにして、メソッド名のタイプミスを避けることができます。また、メソッドの名前を変更するなど、リファクタリングにも役立ちます。
私は現在、Windows上でRails 2.3.2およびRadRails IDEとともにRuby 1.8.6-27 RC2を使用しています。
コードのテストについての回答はありません。私は上記のコード断片の単体テストをしていましたが、私の手作業によるテストでは失敗し続けていましたが、なぜその理由が分かりませんでした。私が探しているのはRubyの構文チェッカーで、標準のコンパイラが見つけ出すのと同じようなエラーが見つかる。 〜 –
Cコンパイラは、4 == 5.5を実行するとエラーを表示しません。 – Chuck
jetbrains ruby ideをチェックアウトしてください。https://www.jetbrains.com/ruby/ –