微信号:rigongyizu365

介绍:一线码农不端不装的「日拱一卒」,关注技术、书籍、创业、GTD、以及一切个人成长周边的话题,每周一到五更新.

如何精确地自定义Validation的错误提示 | Rails 5

2016-08-01 22:37 lazybios

Active Record默认的Validation会提供一个属性异常的错误提示消息,但很多时候,我们会选择通过自定义的方式显示这个信息。一般的做法是通过向下面这样给:message参数传递一个String对象或者Proc闭包。

class Book < ActiveRecord::Base
  # error message with a string
  validates_presence_of :title, message: 'You must provide the title of book.'

  # error message with a proc
  validates_presence_of :price,
      :message => Proc.new { |error, attributes|
      "#{attributes[:key]} cannot be blank."
      }
end

从Rails 5开始,以Proc方式定义的错误消息,会把发生错误的模型对象也一并传入进去,从而可以允许我们更加灵活精确的自定义错误消息内容。过去是把错误消息抽象成某一个特定类型的错误来对待,现在可以更加精准的针对某个具体实例来指出问题了,如下:

class Book < ActiveRecord::Base
  # error message with simple string
  validates_presence_of :title, message: 'You must provide the title of book.'

  # error message with proc using current record object
  validates_presence_of :price,
      :message => Proc.new { |book, data|
      "You must provide #{data[:attribute]} for #{book.title}"
      }
end

-完-

你还可以看:

5 个视图相关Tips | Rails

IEEE的2016编程语言排行榜

Javascript实现的数据库Nedb

参考引用


 
日拱一卒 更多文章 Rails: 如何避免N+1查询问题 Front-end: Clearfix清除浮动技巧 Ruby: 一些关于Block的高阶用法实例 Ruby: 一些简单实用的函数式编程实践 利器: 图像批处理工具ImageMagick
猜您喜欢 PC与无线齐飞,Web共Native一色——天猫首页全解密 LinkedIn开源Photon机器学习:支持Spark 年底了,收成怎么样? nginx使用线程池提升9倍性能(上)