Sha256: 56c2c8efd306017b5600869f2c10b791cb1b6265bd236601a5c1f93f454347c5

Contents?: true

Size: 915 Bytes

Versions: 1

Compression:

Stored size: 915 Bytes

Contents

module MList
  module Manager
    
    class Database
      def create_list(address, attributes = {})
        attributes = {
          :address => address,
          :label   => address.match(/\A(.*?)@/)[1]
        }.merge(attributes)
        List.create!(attributes)
      end
      
      def lists(email)
        lists = List.find_all_by_address(email.list_addresses)
        email.list_addresses.map { |a| lists.detect {|l| l.address == a} }.compact
      end
      
      class List < ActiveRecord::Base
        include ::MList::List
        
        has_many :subscribers, :dependent => :delete_all
        
        def list_id
          "#{self.class.name}#{id}"
        end
        
        def subscribe(address)
          subscribers.find_or_create_by_email_address(address)
        end
      end
      
      class Subscriber < ActiveRecord::Base
        belongs_to :list
      end
    end
    
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
aiwilliams-mlist-0.1.0 lib/mlist/manager/database.rb