首页 > 解决方案 > 基于日期时间属性的唯一验证,而不是值?

问题描述

我希望一个字段是唯一的,基于是否存在另一个日期时间属性。

就像是:

validates :promo_code, uniqueness: { scope: [:archived_at] }

经过:

promo_code = TENOFF, archived_at = null

promo_code = TENOFF, archived_at = not null

promo_code = TENOFF, archived_at = not null

失败:

promo_code = TENOFF, archived_at = null

promo_code = TENOFF, archived_at = null

是通过自定义验证器执行此操作的唯一方法吗?

标签: ruby-on-railsactiverecord

解决方案


试试这个,使用ifunless

validates :promo_code, uniqueness: { scope: [:archived_at] }, unless: Proc.new { |o| o.archived_at.blank? }

推荐阅读