我的模型中有这个基本验证:
validates :student_number, :presence => true,
:length => { :maximum => 255 },
:uniqueness => true
那是什么呢?这是我最好的猜测,如果你愿意告诉我哪里弄错了,我会很感激。
validates
是一种方法。我发送了符号:first_name
,然后是:presence => true
,这是一个哈希,:presence
表示密钥而true
表示值?
除了它看起来不像哈希,至少不是根据docs。
然后:length => { :maximum => 255 }
与:presence => true
是同一种实体(哈希?),但它期望另一个哈希作为参数?
感谢您的帮助。
答案 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 }
但第一种方式更短