Rails 4模型格式和哈希(非常基本)

时间:2015-06-02 20:50:04

标签: ruby-on-rails ruby ruby-on-rails-4

我的模型中有这个基本验证:

  validates :student_number, :presence => true,
                    :length => { :maximum => 255 },
                    :uniqueness => true

那是什么呢?这是我最好的猜测,如果你愿意告诉我哪里弄错了,我会很感激。

validates是一种方法。我发送了符号:first_name,然后是:presence => true,这是一个哈希,:presence表示密钥而true表示值?

除了它看起来不像哈希,至少不是根据docs

然后:length => { :maximum => 255 }:presence => true是同一种实体(哈希?),但它期望另一个哈希作为参数?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

Ruby允许你删除括号和括号,如果它可以自己推断它们的位置;在您的情况下,您可以将代码重写为:

validates(:student_number, { :presence => true,
                             :length => { :maximum => 255 },
                             :uniqueness => true })

这是一个方法调用,传递第一个参数,它是要验证的属性,第二个参数是验证选项,哈希。

注意:这种解释有点简化,验证在处理其参数方面实际上有点复杂。有关其工作原理的详细信息,请参阅here

答案 1 :(得分:0)

关闭但不够近。所有:presence => true, :length => { :maximum => 255 }, :uniqueness => true都是一个哈希,包含三个密钥presence, length, uniqueness和三个相应的值。实际上它和你写的一样 { :presence => true, :length => { :maximum => 255 }, :uniqueness => true }但第一种方式更短