summaryrefslogtreecommitdiff
path: root/app/models/message.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/message.rb')
-rw-r--r--app/models/message.rb34
1 files changed, 34 insertions, 0 deletions
diff --git a/app/models/message.rb b/app/models/message.rb
index 3c5ad58..35c47ef 100644
--- a/app/models/message.rb
+++ b/app/models/message.rb
@@ -4,12 +4,34 @@ class Message < ActiveRecord::Base
belongs_to :user_sender, class_name: "User", foreign_key: "user_sender_id"
belongs_to :user_target, class_name: "User", foreign_key: "user_target_id"
+ belongs_to :user_editor, class_name: "User", foreign_key: "user_editor_id"
+ belongs_to :user_hidden, class_name: "User", foreign_key: "user_hidden_id"
+
validates_presence_of :user_sender, :user_target, :text, :subject
validates_length_of :text, in: 1..8000
validates_length_of :subject, in: 1..2000
+ has_many :messagereplies
+
+ accepts_nested_attributes_for :messagereplies
+
+ before_destroy :do_destroy?
+
+ def do_destroy?
+ unless user_hidden || user_sender == user_target
+ update_attributes(user_hidden: User.current)
+ return false
+ else
+ return true
+ end
+ end
+
+ def to_s
+ subject
+ end
+
def sender
@sender ||= if self.user_sender.present?
user_sender
@@ -26,6 +48,18 @@ class Message < ActiveRecord::Base
end
end
+ def editor
+ @editor ||= (self.user_editor || User.first)
+ end
+
+ def edited?
+ !!user_editor_id
+ end
+
+ def replies
+ messagereplies
+ end
+
def send_new_message_mail
begin
mail = RedstonerMailer.new_message_mail(user_target, self)