我在哈希中有一个哈希:
validates :password,
length: { within: 5..30 },
presence: true
是否可以省略散列中哈希的大括号?这样:
validates :password,
length: within: 5..30,
presence: true
引发语法错误。
答案 0 :(得分:3)
更确切地说,在Hash文字中有一个Hash文字恰好是方法调用中的最后一个参数。只有当Hash是方法调用中的最后一个参数时才能省略大括号,在其他任何地方都需要它们。你的内部Hash是另一个Hash文字中的值,并且它不是方法调用中的最后一个参数,所以不,你不能这样做。
答案 1 :(得分:1)
不幸的是没有(至少我知道)因为长度需要多个参数并且期望哈希作为参数。我发现自己正在做的一件事就是在我的config / constants.rb文件中初始化这些约束,因为这些变量不会经常改变所有这些,我常常发现自己提供了多个参数来长度。
配置/ constants.rb
MODEL_LENGTH_CONSTRAINT = {
within: 5..30,
too_short: "must have at least %{count} words",
too_long: "must have at most %{count} words"
}
应用程序/模型/ model.rb
validates :password,
length: MODEL_LENGTH_CONSTRAINT,
presence: true
我知道这并不是解决问题的真正办法,但它是一个更清洁的IMO。快乐的编码。