Sha256: 17ae6579ed3e094edf4983d6c6b920ea34fc8dc4bb0510419b2ebb61fbd40453
Contents?: true
Size: 1.71 KB
Versions: 2
Compression:
Stored size: 1.71 KB
Contents
module PostfixAdmin class Alias < ApplicationRecord self.table_name = :alias self.primary_key = :address validate on: :create do |a| domain = a.rel_domain if domain.aliases.zero? || a.mailbox elsif domain.rel_aliases.pure.count >= domain.aliases message = "already has the maximum number of aliases " \ "(maximum is #{domain.aliases} aliases)" a.errors.add(:domain, message) end end validates :address, presence: true, uniqueness: { case_sensitive: false }, format: { with: RE_EMAIL_LIKE_WITH_ANCHORS, message: "must be a valid email address" } validates :goto, presence: true belongs_to :rel_domain, class_name: "Domain", foreign_key: :domain belongs_to :mailbox, foreign_key: :address, optional: true scope :pure, -> { joins("LEFT OUTER JOIN mailbox ON alias.address = mailbox.username").where("mailbox.username" => nil) } attribute :local_part, :string attr_writer :forward_addresses def forward_addresses if @forward_addresses.nil? if goto.nil? [nil] else goto.split(",") + [nil] end else @forward_addresses end end before_validation do |a| unless a.address a.address = "#{a.local_part}@#{a.domain}" unless a.local_part.empty? end unless a.forward_addresses.empty? forward_addresses = a.forward_addresses.dup forward_addresses.delete_if { |f| f.blank? } a.goto = forward_addresses.join(",") end end def mailbox? !!mailbox end def pure_alias? !mailbox end def gotos goto.split(",") end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
postfix_admin-0.2.1 | lib/postfix_admin/alias.rb |
postfix_admin-0.2.0 | lib/postfix_admin/alias.rb |