Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何自定义消息的验证长度以包含属性长度?_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 如何自定义消息的验证长度以包含属性长度?

Ruby on rails 如何自定义消息的验证长度以包含属性长度?,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我想自定义上的错误消息,以验证的长度,从而包括正在检查的属性的长度。我知道我们可以在消息中执行“%{value}”或“%{attribute}”来获取这些值。是否有可以用来获取属性长度的标志?我希望避免为了得到一个漂亮的信息而创建自定义验证。此外,当验证程序已经在对字符串进行两次计数时,对字符串进行两次计数似乎是一种浪费 以下是我想要的: validates_length_of :a, :b,:c, :d, :e, :maximum => 1000, :message=>"is to

我想自定义
上的错误消息,以验证
的长度,从而包括正在检查的属性的长度。我知道我们可以在消息中执行
“%{value}”
“%{attribute}”
来获取这些值。是否有可以用来获取属性长度的标志?我希望避免为了得到一个漂亮的信息而创建自定义验证。此外,当验证程序已经在对字符串进行两次计数时,对字符串进行两次计数似乎是一种浪费

以下是我想要的:

validates_length_of :a, :b,:c, :d, :e, :maximum => 1000, :message=>"is to long, maximum length is` %{count}, current length is %{actual length here} "

您可以使用Proc来获取属性

validates_length_of :a, maximum: 1000,
    message: proc { |p, v| "is to long, " +
                           "maximum length is #{v[:count]}, " +
                           "current length is #{v[:value].length}" }

不称这是一个答案,因为它更像是暗中刺伤,但如何:message=>“长度应该是%{count},但应该是{%{value}.length}”。基本上,我希望你能把%{value}当作#{}里面的真正表达式来对待。danh,这是我的第一个想法。不幸的是,它没有像预期的那样工作。我希望避免这个过程。但是在挖掘rails源代码之后,我认为我所希望的不存在。