Module: Facteur::AddresseeModel::InstanceMethods
- Defined in:
- lib/facteur/addressee_model.rb
Instance Method Summary collapse
-
#create_mailbox(name, options = {}) ⇒ Object
Creates a new mailbox.
-
#create_mailbox!(name, options = {}) ⇒ Object
Creates a new mailbox.
-
#method_missing(method, *args, &block) ⇒ Object
generates the mailboxes accessors.
-
#send_message(message, options) ⇒ Object
Sends a message to one or many addressees.
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method, *args, &block) ⇒ Object
generates the mailboxes accessors
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
# File 'lib/facteur/addressee_model.rb', line 105 def method_missing(method, *args, &block) # mailboxes = self.class.mailboxes.map{ |mailbox| mailbox[:name] } # # if mailboxes.include?(method) # mailbox = Mailbox.find(:first, :conditions => {:name => method.to_s, :addressee_id => self.attributes["id"], :addressee_type => self.class.to_s}) # return mailbox unless mailbox.nil? # end begin super rescue NoMethodError mailbox = Mailbox.find(:first, :conditions => {:name => method.to_s, :addressee_id => self.attributes["id"], :addressee_type => self.class.to_s}) return mailbox unless mailbox.nil? super end end |
Instance Method Details
#create_mailbox(name, options = {}) ⇒ Object
Creates a new mailbox. if a mailbox with the same name already exists, it fails and returns false. If succeeded, it creates an accessor for the new mail box and returns true. Example :
class User < ActiveRecord::base
include Facteur::AddresseeModel
mailbox :private_mailbox
end
The previous declaration will add : User#private_mailbox
# supposing that a name field exists
user = User.new(:name => 'John')
user.create_mailbox :public_mailbox #=> return true
user.create_mailbox :private_mailbox #=> return false
86 87 88 89 90 91 92 93 94 |
# File 'lib/facteur/addressee_model.rb', line 86 def create_mailbox(name, ={}) mailbox = Mailbox.new(:name => name.to_s) mailbox.addressee = self mailbox.default = [:default] return false if mailbox.save == false @default_mailbox = name if [:default] true end |
#create_mailbox!(name, options = {}) ⇒ Object
Creates a new mailbox. if a mailbox with the same name already exists, it raises an exception. If succeeded, it creates an accessor for the new mail box and returns the created mailbox.
97 98 99 100 101 102 |
# File 'lib/facteur/addressee_model.rb', line 97 def create_mailbox!(name, ={}) if create_mailbox(name, ) == false raise "Mailboxes names must be unique. Can't create '#{name}'" end self.send "#{name}" end |
#send_message(message, options) ⇒ Object
Sends a message to one or many addressees. The following options are available:
:to
-
the addressee or the list of addressees (mandatory)
:in
-
the name of the mailbox in which the message is posted (mandatory)
:body
-
the message’s body (mandatory)
Usage :
# send a message to one addressee
@john.('message contents', :to => @peter, :in => :private_mailbox)
# send a message to many addressees
@john.('message contents', :to => [@peter, @james], :in => :private_mailbox)
58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/facteur/addressee_model.rb', line 58 def (, ) msg = nil [:body] = if [:to].is_a? Array [:to].each do |addressee| msg = (addressee, [:in], [:body], [:subject]) end else msg = ([:to], [:in], [:body], [:subject]) end msg end |