Module: PrivateMessages::HasPrivateMessage::ClassMethods

Defined in:
lib/private_messages/has_private_message.rb

Instance Method Summary collapse

Instance Method Details

#has_private_message(options = {}) ⇒ Object

Sets up a model have private messages, defining the child class as specified in :class_name (typically “Messages”). Provided the following instance messages:

  • sent_messages - returns a collection of messages for which this object is the sender.

  • received_messages - returns a collection of messages for which this object is the recipient.



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/private_messages/has_private_message.rb', line 14

def has_private_message(options = {})
  options[:class_name] ||= 'Message'

  unless included_modules.include? InstanceMethods
    class_attribute :options
    table_name = options[:class_name].constantize.table_name
    
    has_many :sent_messages, -> {
                
                where("#{table_name}.sender_deleted = false").order("#{table_name}.created_at DESC")
              },
              :class_name => options[:class_name], :foreign_key => 'sender_id'
              #:includes => :recipient,
               #
                #.order("#{table_name}.created_at DESC")
                
                #:order => "#{table_name}.created_at DESC",
                #:conditions => ["#{table_name}.sender_deleted = ?", false]
                        


    has_many :received_messages, ->{
                where("#{table_name}.recipient_deleted = false").order("#{table_name}.created_at DESC")
              },
             :class_name => options[:class_name],
             :foreign_key => 'recipient_id'
             #, ->
             #{
             #   :includes => :sender,
             #   :order => "#{table_name}.created_at DESC",
             #   :conditions => [, false]
             #}

    #extend ClassMethods
    include InstanceMethods
  end 
  self.options = options
end