【发布时间】:2011-12-13 21:51:04
【问题描述】:
我有一个相当简单的 ruby 语法问题(以及其他一些说明),我这辈子都想不通。
上下文是我有非常常见的模型类子类化 ActiveRecord::Base,并且我正在使用验证。
我相信 Ruby 约定喜欢通过将长段代码拆分为多行来保持整洁,如果这些行达到 80 行,除非使用正则表达式很难做到这一点。我的第一个问题是:
如何正确拆分此验证行以使其正常工作?
validates :email, :uniqueness => true, :length => {:within => 5..50}, :format => {:with => /^[^@][\w.-]+@[\w.-]+[.][a-z]{2,4}$/i}
我尝试过类似的方法:
validates(
:email,
:uniqueness => true,
:length => {:within => 5..50},
:format => {:with => /^[^@][\w.-]+@[\w.-]+[.][a-z]{2,4}$/i}
)
我在某处的 ruby 约定中读到,您可以使用反斜杠分割行,但我还没有尝试过,因为我认为这看起来有点奇怪,特别是当您可以通过确保逗号或操作数在行尾。
我的最后一个问题是:
有人可以编写这个 validates 方法并使用所有正确的大括号和括号吗?也许我对基本语法的去向有点困惑。
快速回顾:
如何正确拆分上面的单行验证?
可以用反斜杠分割 ruby 代码行吗?
有人用大括号和方括号编写了相同的方法。
提前谢谢。
【问题讨论】:
-
使用反斜杠转义行尾字符现在被认为是不好的做法。否则,您的 validates 方法看起来还不错。把时间花在比这更有意义的事情上。
-
你是说如果你用逗号分割这一行而不用括号,它会抛出一个语法错误?如果是这样,您可以发布错误吗?
-
另外,这可能更适合codereview.stackexchange.com
-
没有任何一个特定的错误,但由于等等,我一直在在线等等错误。我的意思是让大括号卷曲,因为出于某种原因,我认为整个事情在某一时刻都是一个哈希,显然我发布的版本完全没问题=)我只是想知道将它分成多行的正确方法是什么没有错误
标签: ruby-on-rails ruby syntax multiline lines-of-code