Sha256: 74c956e125fc9088f900d5d4175e8feff51328646ff16699a57924dd22ce5b8a

Contents?: true

Size: 1.07 KB

Versions: 13

Compression:

Stored size: 1.07 KB

Contents

module MList
  module Manager
    
    class Database
      include ::MList::Manager
      
      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
      
      def no_lists_found(email)
        # TODO: Move to notifier
      end
      
      class List < ActiveRecord::Base
        include ::MList::List
        
        has_many :subscribers, :dependent => :delete_all
        
        def label
          self[:label]
        end
        
        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

13 entries across 13 versions & 2 rubygems

Version Path
aiwilliams-mlist-0.1.5 lib/mlist/manager/database.rb
aiwilliams-mlist-0.1.6 lib/mlist/manager/database.rb
aiwilliams-mlist-0.1.7 lib/mlist/manager/database.rb
aiwilliams-mlist-0.1.8 lib/mlist/manager/database.rb
mlist-0.1.18 lib/mlist/manager/database.rb
mlist-0.1.17 lib/mlist/manager/database.rb
mlist-0.1.16 lib/mlist/manager/database.rb
mlist-0.1.14 lib/mlist/manager/database.rb
mlist-0.1.13 lib/mlist/manager/database.rb
mlist-0.1.12 lib/mlist/manager/database.rb
mlist-0.1.11 lib/mlist/manager/database.rb
mlist-0.1.10 lib/mlist/manager/database.rb
mlist-0.1.9 lib/mlist/manager/database.rb