gpt4 book ai didi

ruby-on-rails - 语法检查或 "Compiling"Ruby on Rails 应用程序

转载 作者:数据小太阳 更新时间:2023-10-29 07:04:57 25 4
gpt4 key购买 nike

我是 Ruby 的新手,最近在创建 Ruby on Rails 应用程序时遇到了与值进行比较的问题。在 Controller 中,我有以下始终返回 false 的语句:

if (user.id != params[:id])

问题是 user.id(它是一个 Active Record)是一个整数而 params[:id] 是一个字符串。我花了一段时间才弄清楚这一点,最后我将其更改为:

if (user.id != params[:id].to_i)

现在语句按预期工作。

为避免将来出现此错误,是否有一种方法可以“编译”或让 Ruby 在您尝试比较 2 种不同类型时发出警告?我遇到的其他一些我想“编译检查”的问题是:

  • 如果我创建了一个变量但不使用它,请警告我。帮助检查变量名称中的拼写错误。
  • 确保类中存在一个方法,这样我就可以避免方法名称拼写错误,也有助于重构,例如,如果我重命名一个方法。

我目前在 Windows 上使用 Ruby 1.8.6-27 RC2 和 Rails 2.3.2 和 RadRails IDE。

最佳答案

先测试,再编码。如果您编写的测试涵盖应用程序的所有分支,您就可以确保您的代码运行并产生正确的结果。

编辑:我应该指出,比较两种类型的能力、直到最后一秒才依赖于方法名称等是 Ruby 的核心特性。

与其说是调用方法,不如说是向对象发送消息。然后该对象负责确定如何处理该方法。在 Rails 中,这用于访问 ActiveRecord 中的数据库列。在将具有列名称的消息发送到对象之前,没有用于列的方法。

Ruby 中的静态类型与鸭子类型系统背道而驰。人们通常可以免费获得多态性,而不必担心复杂的继承/接口(interface)方案。

我建议接受这些特性并通过测试弥补不确定性

关于ruby-on-rails - 语法检查或 "Compiling"Ruby on Rails 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1104291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com