【发布时间】:2018-10-18 08:18:52
【问题描述】:
目前,我无法创建具有 nil 值的空字段,因为 nil 被认为是唯一的。我想做如果字段有值,那么它必须是唯一的,如果 nil 然后不是,它也不能返回一个空字符串值。
这是我的验证:
validates :subdomain, :allow_nil => true, uniqueness: true
更新
通过此验证,我收到一条错误消息:
子域不能为空
validates_uniqueness_of :subdomain, presence: true, allow_nil: true, if: -> (x) { x.subdomain.present? }
如果控制台中没有“presence: true”,我可以创建一个子域值为 nil 的记录,但如果我在浏览器中执行此操作,它会创建一个空字符串的子域。
【问题讨论】:
-
试试
validates :subdomain, :allow_nil => true, uniqueness: true, if: '!subdomain.nil?' -
也许您对数据库级别有独特的约束?尝试保存具有 nil 值的第二条记录时遇到哪个错误?
-
无子域简单字符串。错误消息:“子域已被占用”
标签: ruby-on-rails ruby-on-rails-3 validation null