validates不要校验布尔型 presence: true

来源:互联网 发布:江苏网络电视台回看 编辑:程序博客网 时间:2024/04/29 03:05

一个小坑

重现

有这么一个对象

class Article  attr_accessible :can_hidden  validates :can_hidden, presence: trueend

现在我创建一个不能被隐藏的文章: Article.create!(can_hidden: false)

Boom!!

ActiveRecord::RecordInvalid: 验证失败: can_hidden 不能为空

根源

追踪 PresenceValidator 可以发现问题出在这里:

https://github.com/rails/rails/blob/127411fdf3a3470e8830abf0c7876db67c0c344a/activemodel/lib/active_model/errors.rb#L255

解决办法

不要对 boolean 类型做 presence 校验,设置默认值

其它讨论及解决方案

  1. rails/rails#2521
  2. rails/rails#20343
  3. rails/rails#7508
  4. rails/rails#6953

enjoy!

0 0
原创粉丝点击