Chr*_*s C 6 ruby compilation ruby-on-rails syntax-checking
我是Ruby的新手,最近遇到了一个与创建Ruby on Rails应用程序时的值相比较的问题.在控制器中,我有以下语句总是返回false:
if (user.id != params[:id])
Run Code Online (Sandbox Code Playgroud)
问题是user.id(它是一个Active Record)是一个整数,params [:id]是一个字符串.我花了一段时间来弄清楚这一点,最后我把它改为:
if (user.id != params[:id].to_i)
Run Code Online (Sandbox Code Playgroud)
现在该声明按预期工作.
为了避免将来出现这种错误,有没有办法"编译"或让Ruby在你尝试比较2种不同的类型时发出警告?我遇到的其他一些我想要"编译检查"的问题是:
我目前正在Windows上使用带有Rails 2.3.2和RadRails IDE的Ruby 1.8.6-27 RC2.
首先测试,然后测试代码.如果编写涵盖应用程序所有分支的测试,则可以确保代码运行并产生正确的结果.
编辑:我应该指出,比较两种类型的能力,不依赖于方法名称直到最后一秒,等等是Ruby的核心功能.
您不会像向对象发送消息那样调用方法.然后,该对象负责确定如何处理该方法.在Rails中,这用于访问ActiveRecord中的DB列.在将具有列名称的消息发送到对象之前,没有列的方法.
Ruby中的静态类型违反了duck typing系统.人们通常可以免费获得多态性,而不必担心复杂的继承/接口方案.
我建议采用这些功能并通过测试来弥补不确定性
我发现的最佳解决方案是一个可以进行即时语法检查的 IDE,例如 RubyMine。我不确定它是否能解决我原来的问题,但它帮助我找到并修复了其他几个语法和编译错误。谢谢大家的建议。
| 归档时间: |
|
| 查看次数: |
3639 次 |
| 最近记录: |