我的应用程序上有OpenID身份验证,默认情况下不需要电子邮件,但如果用户创建请求,我需要验证电子邮件的存在。
class Request < ActiveRecord::Base
belongs_to :user
accepts_nested_attributes_for :user
end
class User < ActiveRecord::Base
has_one :request, dependent: :destroy
validates :email, format: { with: Devise.email_regexp, allow_blank: true }
end
我已经尝试了两种变体,但它们不起作用,并且未显示验证消息。
第一个:
class User < ActiveRecord::Base
validates :email, presence: true, if: ->(u) { u.request.present? }
end
第二个:
class Request < ActiveRecord::Base
validate :validate_user_email
def validate_user_email
self.user.errors.add(:email, :blank) if self.user.email.blank?
end
end
有人可以建议可行吗?谢谢!