验证嵌套属性

时间:2014-03-08 11:46:36

标签: ruby-on-rails validation nested-forms nested-attributes

我的应用程序上有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

有人可以建议可行吗?谢谢!

0 个答案:

没有答案