module PrivateMessages::HasPrivateMessage::ClassMethods
Public Instance Methods
has_private_message(options = {})
click to toggle source
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.
# 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