【发布时间】:2019-07-27 12:24:36
【问题描述】:
我正在编写一个邀请系统,其中邀请可以有 4 种状态之一:
enum state: [:pending, :accepted, :rejected, :revoked]
我想验证邀请电子邮件属性的唯一性,以便:
- 如果待处理且待处理或已接受的邀请已存在则无效
- 如果存在被拒绝或撤销的邀请则有效
我试过了:
validates :email, uniqueness: { scope: :status }, if: -> { [:pending, :accepted].include?(status) }
但是,如果存在被拒绝的邀请,这仍然会阻止创建待处理的邀请。
我知道我可以通过自定义验证来做到这一点,但我想知道是否可以通过活动记录验证来实现?
【问题讨论】:
标签: ruby-on-rails activerecord enums