如何在我的情况下跳过格式validation?

我有一个模型User,其属性为“guest”(BOOLEAN)如果user.guest == true或user.guest == nil,我想跳过电子邮件的格式validation,

试着

VALID_EMAIL_REGEX = /^(\S+)@([a-z0-9-]+)(\.)([az]{2,4})(\.?)([az]{0,4})+$/i validates :email, format: { :with => VALID_EMAIL_REGEX } unless :guest? 

但现在即使用户有guest == false或guest == nilvalidation仍在跳过

可能有什么不对?

另一种常见的validation效果很好

 validates :email, presence: true, uniqueness: { case_sensitive: false } unless :guest? 

试试这个代码: –

 VALID_EMAIL_REGEX = /^(\S+)@([a-z0-9-]+)(\.)([az]{2,4})(\.?)([az]{0,4})+$/i validates :email, presence: true, format: {with: VALID_EMAIL_REGEX}, uniqueness: {case_sensitive: false}, unless: :guest?