Class: Message
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Message
- Defined in:
- app/models/message.rb
Instance Attribute Summary collapse
-
#reply_to ⇒ Object
Returns the value of attribute reply_to.
-
#to ⇒ Object
Returns the value of attribute to.
Class Method Summary collapse
- .new_reply(sender, message_thread = nil, params = {}) ⇒ Object
-
.read(id, reader) ⇒ Object
Ensures the passed user is either the sender or the recipient then returns the message.
Instance Method Summary collapse
- #ensure_not_sending_to_self ⇒ Object
-
#mark_deleted(user) ⇒ Object
Marks a message as deleted by either the sender or the recipient, which ever the user that was passed is.
- #notify_recipient ⇒ Object
-
#read? ⇒ Boolean
Returns true or false value based on whether the a message has been read by its recipient.
- #update_message_threads ⇒ Object
Instance Attribute Details
#reply_to ⇒ Object
Returns the value of attribute reply_to.
3 4 5 |
# File 'app/models/message.rb', line 3 def reply_to @reply_to end |
#to ⇒ Object
Returns the value of attribute to.
2 3 4 |
# File 'app/models/message.rb', line 2 def to @to end |
Class Method Details
.new_reply(sender, message_thread = nil, params = {}) ⇒ Object
74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'app/models/message.rb', line 74 def self.new_reply(sender, = nil, params = {}) = new(params[:message]) .to ||= params[:to] if params[:to] if .parent = . .reply_to = . .to = .sender.login .subject = ..subject .sender = sender end end |
.read(id, reader) ⇒ Object
Ensures the passed user is either the sender or the recipient then returns the message. If the reader is the recipient and the message has yet not been read, it marks the read_at timestamp.
28 29 30 31 32 33 34 35 |
# File 'app/models/message.rb', line 28 def self.read(id, reader) = find(id, :conditions => ["sender_id = ? OR recipient_id = ?", reader, reader]) if .read_at.nil? && reader == .recipient .read_at = Time.now .save! end end |
Instance Method Details
#ensure_not_sending_to_self ⇒ Object
51 52 53 |
# File 'app/models/message.rb', line 51 def ensure_not_sending_to_self errors.add(:base, "You may not send a message to yourself.") if self.recipient && self.recipient.eql?(self.sender) end |
#mark_deleted(user) ⇒ Object
Marks a message as deleted by either the sender or the recipient, which ever the user that was passed is. Once both have marked it deleted, it is destroyed.
44 45 46 47 48 |
# File 'app/models/message.rb', line 44 def mark_deleted(user) self.sender_deleted = true if self.sender == user self.recipient_deleted = true if self.recipient == user self.sender_deleted && self.recipient_deleted ? self.destroy : save! end |
#notify_recipient ⇒ Object
55 56 57 |
# File 'app/models/message.rb', line 55 def notify_recipient UserNotifier.(self).deliver end |
#read? ⇒ Boolean
Returns true or false value based on whether the a message has been read by its recipient.
38 39 40 |
# File 'app/models/message.rb', line 38 def read? self.read_at.nil? ? false : true end |
#update_message_threads ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'app/models/message.rb', line 59 def recipients_thread = MessageThread.(self.recipient_id, (self.parent_id || self.id)) recipients_thread.sender = sender recipients_thread.recipient = recipient recipients_thread. = self recipients_thread. = (self.parent || self) recipients_thread.save if parent senders_thread = MessageThread.(self.sender_id, self.parent_id) senders_thread. = self senders_thread.save end end |