Sha256: 7984dd5419b5e1b5a47bf4cf9f06f8021123bb09b7bc6ca1bf6902a46d53bb95

Contents?: true

Size: 1.08 KB

Versions: 2

Compression:

Stored size: 1.08 KB

Contents

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

      module ClassMethods
        def is_private_message(options = {})
          class_attribute :options
          self.options = options

          klass_name = options[:class_name] ||= "User"

          belongs_to :sender, :class_name => klass_name, :foreign_key => 'sender_id'
          belongs_to :recipient, :class_name => klass_name, :foreign_key => 'recipient_id'

          scope :unread, where("read_at is null")

          def around_user(user)
            klass_name.constantize.where("sender_id = ? or recipient_id = ?", user.id, user.id)
          end

          unless included_modules.include? InstanceMethods
            include InstanceMethods
          end
        end
      end

      module InstanceMethods
        def unread?
          !self.read?
        end

        def read?
          !self.read_at.blank?
        end

        def read!
          self.update_attribute(:read_at, Time.now)
        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_message.rb
private_messages-0.0.1 lib/private_messages/models/private_message.rb