1

在 Ruby On Rails 3 中,正确使用

validates :name,  presence: true, length: { maximum: 50 }

反而

validates :name,  presence: true, :length => { maximum: 50 }

?

在第一种情况下,即使代码有效,Aptana3 仍然说是错误,我必须更改为第二种方法,它退出表示存在错误。

为什么?

Rails 3.2.10 ruby​​ 1.9.3p362(2012-12-25 修订版 38607)[x86_64-darwin12.2.1]

4

3 回答 3

1

您的 IDE 认为正确的可能与实际正确的不同。

例如,IntelliJ 需要设置 Ruby 语言级别才能获得新的哈希语法。

于 2013-01-15T17:08:32.740 回答
1

我认为它与 Rails 无关,与您的 ruby​​ 版本有关。

您可能需要配置 Aptana 以使用 ruby​​ 1.9。但奇怪的是,您还在第二个版本(presence: true)中使用了新语法,所以问题可能出在其他地方......

但关键是,您应该使用第一个版本。

于 2013-01-15T17:10:36.000 回答
0

一件事:它与 Aptana 无关。但它不应该给出警告/错误。Yoy 可能安装了多个版本的 ruby​​。确保 Aptana 使用 ruby​​ >= 1.9。

列出系统上安装的所有 ruby​​ 版本:

ruby -v 

rvm list (if used rvm to install rubies)

在 ruby​​ 1.9 之前,哈希的声明如下:

:key => "value"

从 1.9 开始,为了减少打字负荷,这个速记已经可用:

key: "value"

但是,在使用 rails 时,我发现了一些违规行为,例如:

validates :some_attr, presence: true, :if => { block }  # this works

但这不会:

validates :some_attr, presence: true, if: { block }  # this DOES NOT works

lambda、Proc 等也是如此。基本上我们需要指定一个块。

于 2013-01-15T19:31:51.190 回答