Sha256: b8d0b7dd546dabe0426bcdb3de8a388f03565fbdc02fe6450d84aa3302f66e92

Contents?: true

Size: 1.31 KB

Versions: 2

Compression:

Stored size: 1.31 KB

Contents

# coding: utf-8
module PrivateMessages
  module Models
    module PrivateUser
      def self.included(base)
        base.extend ClassMethods
      end

      module ClassMethods
        def has_private_messages(options = {})
          class_attribute :options
          klass_name = options[:class_name] ||= "Message"
          table_name = klass_name.constantize.table_name

          has_many :outbox_messages, :class_name => klass_name,
             :foreign_key => 'sender_id', :include => :recipient,
             :order => "#{table_name}.created_at desc"

          has_many :inbox_messages, :class_name => klass_name,
             :foreign_key => 'recipient_id', :include => :sender,
             :order => "#{table_name}.created_at desc"

          unless included_modules.include? InstanceMethods
            include InstanceMethods
          end

          self.options = options
        end
      end

      module InstanceMethods
        def unread_messages
          self.inbox_messages.unread
        end

        def is_sender_of?(message)
          message.sender_id == self.id
        end

        def is_recipient_of?(message)
          message.recipient_id == self.id
        end

        def has_message?(message)
          self.is_sender_of?(message) || self.is_recipient_of?(message)
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
private_messages-0.0.11 lib/private_messages/models/private_user.rb
private_messages-0.0.1 lib/private_messages/models/private_user.rb