如何自定义validates_length_of消息以包含属性长度?

时间:2012-05-02 02:04:33

标签: ruby-on-rails ruby-on-rails-3

我想在validates_length_of上自定义错误消息,以包含要检查的属性的长度。我知道我们可以在邮件中"%{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} "

1 个答案:

答案 0 :(得分:3)

您可以使用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}" }