Sha256: a25aba7e38875dd972ef8a5c721ed2cb48f4d991174006ebf6350d2fe230ef95

Contents?: true

Size: 1.34 KB

Versions: 1

Compression:

Stored size: 1.34 KB

Contents

module Mailroute
  class EmailAccount < Base
    self.collection_name = 'email_account'
    has_one :domain
    has_one :policy, :class => PolicyUser
    has_one :notification_task, :class => NotificationAccountTask
    has_one :contact, :class => EmailAccountContact
    has_many :wblist, :class => WBList

    def blacklist
      WBList.filter(:email_account => id, :wb => 'b').map(&:email)
    end

    def whitelist
      WBList.filter(:email_account => id, :wb => 'w').map(&:email)
    end

    def add_to_blacklist(address)
      create_wblist(:wb => 'b', :email => address)
    end

    def add_to_whitelist(address)
      create_wblist(:wb => 'w', :email => address)
    end

    def set_password(new_password)
      self.password = new_password
      save!
      self
    end

    class << self
      alias_method :get_by_id, :get
      def get(*args)
        if args.size == 1
          get_by_id(*args)
        else
          localpart, domain = *args
          case domain
          when Domain
            get(localpart, domain.id)
          when String
            get(localpart, Domain.get(domain))
          when Integer
            EmailAccount.filter(:domain => domain, :localpart => localpart).first or raise ActiveResource::ResourceNotFound
          else
            raise 'Unknown argument type'
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mailroute-0.0.1 lib/mailroute/models/email_account.rb