ruby-on-rails - 基于日期时间属性的唯一验证,而不是值?
问题描述
我希望一个字段是唯一的,基于是否存在另一个日期时间属性。
就像是:
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
是通过自定义验证器执行此操作的唯一方法吗?
解决方案
试试这个,使用if
或unless
validates :promo_code, uniqueness: { scope: [:archived_at] }, unless: Proc.new { |o| o.archived_at.blank? }
推荐阅读
- .net - .NET Parallel.Foreach 如何构造 IO 密集型操作
- angular - 为什么授权标头未在 Angular 的 API 请求中发送?
- laravel - Laravel 8 对搜索结果进行排序和分页
- ios - 我将如何从不同的类中快速更改 UILabel 的值?
- vue.js - Vue.js 中类别的嵌套路由
- reactjs - Chartjs:制作方形图例
- laravel - Laravel 无法读取 vue 文件
- docker - Github Actions Container 未运行
- html - 卡住试图让这两列并排
- javascript - 页面刷新或仅新页面上的“未捕获的类型错误”...?