validates :reportable_id, :uniqueness => { :scope => [:reportable_type] }
validates :reported_user_id, :presence => true
+ before_validation :set_reported_user
+
# Check if more statuses are needed
- enum :status => %w(open ignored resolved)
- enum :type => %w(administrator moderator)
+ enum :status => %w[open ignored resolved]
+ enum :type => %w[administrator moderator]
- scope :with_status, -> (issue_status) { where(:status => statuses[issue_status]) }
+ scope :with_status, ->(issue_status) { where(:status => statuses[issue_status]) }
def read_reports
resolved_at.present? ? reports.where("updated_at < ?", resolved_at) : nil
transitions :from => :ignored, :to => :open
end
end
+
+ private
+
+ def set_reported_user
+ self.reported_user = case reportable.class.name
+ when "User"
+ reportable
+ when "Note"
+ reportable.author
+ else
+ reportable.user
+ end
+ end
end