# frozen_string_literal: true # == Schema Information # # Table name: email_domain_blocks # # id :bigint(8) not null, primary key # domain :string default(""), not null # created_at :datetime not null # updated_at :datetime not null # parent_id :bigint(8) # class EmailDomainBlock < ApplicationRecord include DomainNormalizable belongs_to :parent, class_name: 'EmailDomainBlock', optional: true has_many :children, class_name: 'EmailDomainBlock', foreign_key: :parent_id, inverse_of: :parent, dependent: :destroy validates :domain, presence: true, uniqueness: true, domain: true def with_dns_records=(val) @with_dns_records = ActiveModel::Type::Boolean.new.cast(val) end def with_dns_records? @with_dns_records end alias with_dns_records with_dns_records? def self.block?(email) _, domain = email.split('@', 2) return true if domain.nil? begin domain = TagManager.instance.normalize_domain(domain) rescue Addressable::URI::InvalidURIError return true end where(domain: domain).exists? end end