- belongs_to :reportable, :polymorphic => true
- has_many :reports
- has_many :comments, :class_name => "IssueComment"
- validates :reportable_id, :uniqueness => { :scope => [ :reportable_type ] }
- belongs_to :user
- validates :user_id, :presence => true
+ belongs_to :reportable, :polymorphic => true
+ belongs_to :reported_user, :class_name => "User", :foreign_key => :reported_user_id
+ belongs_to :user_updated, :class_name => "User", :foreign_key => :updated_by
+
+ has_many :reports, :dependent => :destroy
+ has_many :comments, :class_name => "IssueComment", :dependent => :destroy
+
+ validates :reportable_id, :uniqueness => { :scope => [:reportable_type] }
+
+ ASSIGNED_ROLES = %w[administrator moderator].freeze
+ validates :assigned_role, :presence => true, :inclusion => ASSIGNED_ROLES
+
+ before_validation :set_default_assigned_role
+ before_validation :set_reported_user
+
+ # Check if more statuses are needed
+ enum :status => %w[open ignored resolved]