Ruby on rails 验证电子邮件是否包含其他字段rails

Ruby on rails 验证电子邮件是否包含其他字段rails,ruby-on-rails,validation,model,format,Ruby On Rails,Validation,Model,Format,我需要验证用户的电子邮件是否包含其关联的值: class Company << ApplicationRecord validates :name, presence: true has_many :users end class User << ApplicationRecord belongs_to :company validate :email, presence: true end 您可以创建一个。大概是这样的: class User <

我需要验证用户的电子邮件是否包含其关联的值:

class Company << ApplicationRecord
  validates :name, presence: true
  has_many :users
end

class User << ApplicationRecord
  belongs_to :company
  validate :email, presence: true
end
您可以创建一个。大概是这样的:

class User << ApplicationRecord
    belongs_to :company
    validate :email, presence: true
    validate :valid_company_email

    private

    def valid_company_email
        unless self.email.match(/\S+@#{self.company.name}\.com/)
            errors.add(:email, :invalid) #or replace :invalid with a custom message
        end
    end

end

class用户试试这个
验证电子邮件的格式:=>=/^[\w\d]+@self.company.name+([\w\d]+)+$/
希望它能在内部
self.company.name
显示此错误
方法缺失:用户未定义的方法“company”(调用“User.c connection”建立连接):class(NoMethodError)
它可以工作!此外,我将验证器移动到
app/validators
。谢谢
class User << ApplicationRecord
    belongs_to :company
    validate :email, presence: true
    validate :valid_company_email

    private

    def valid_company_email
        unless self.email.match(/\S+@#{self.company.name}\.com/)
            errors.add(:email, :invalid) #or replace :invalid with a custom message
        end
    end

end