diff --git a/app/models/problem.rb b/app/models/problem.rb index 5549ff5..6002901 100644 --- a/app/models/problem.rb +++ b/app/models/problem.rb @@ -40,15 +40,15 @@ class Problem has_many :comments, :inverse_of => :err, :dependent => :destroy before_create :cache_app_attributes - + scope :resolved, where(:resolved => true) scope :unresolved, where(:resolved => false) scope :ordered, order_by(:last_notice_at.desc) scope :for_apps, lambda {|apps| where(:app_id.in => apps.all.map(&:id))} - + validates_presence_of :last_notice_at, :first_notice_at - - + + def self.all_else_unresolved all if all find(:all) @@ -56,11 +56,11 @@ class Problem where(:resolved => false) end end - + def self.in_env(env) env.present? ? where(:environment => env) : scoped end - + def notices Notice.for_errs(errs).ordered end @@ -68,20 +68,20 @@ class Problem def comments_allowed? Errbit::Config.allow_comments_with_issue_tracker || !app.issue_tracker_configured? end - + def resolve! self.update_attributes!(:resolved => true, :resolved_at => Time.now) end - + def unresolve! self.update_attributes!(:resolved => false, :resolved_at => nil) end - + def unresolved? !resolved? end - - + + def self.merge!(*problems) problems = problems.flatten.uniq merged_problem = problems.shift @@ -93,11 +93,11 @@ class Problem merged_problem.reset_cached_attributes merged_problem end - + def merged? errs.length > 1 end - + def unmerge! problem_errs = errs.to_a problem_errs.shift @@ -110,7 +110,7 @@ class Problem end end - + def self.ordered_by(sort, order) case sort when "app"; order_by(["app_name", order]) @@ -121,7 +121,7 @@ class Problem else raise("\"#{sort}\" is not a recognized sort") end end - + def self.in_date_range(date_range) where(:first_notice_at.lte => date_range.end).where("$or" => [{:resolved_at => nil}, {:resolved_at.gte => date_range.begin}]) end @@ -149,7 +149,7 @@ class Problem first_notice = notices.order_by([:created_at, :asc]).first last_notice = notices.order_by([:created_at, :asc]).last notice ||= first_notice - + attrs = {} attrs[:first_notice_at] = first_notice.created_at if first_notice attrs[:last_notice_at] = last_notice.created_at if last_notice @@ -180,7 +180,7 @@ class Problem end def self.search(value) - where.or(error_class: /#{value}/i).or(where: /#{value}/i).or(message: /#{value}/i).or(app_name: /#{value}/i).or(environment: /#{value}/i) + where.or(:error_class => /#{value}/i).or(:where => /#{value}/i).or(:message => /#{value}/i).or(:app_name => /#{value}/i).or(:environment => /#{value}/i) end private -- libgit2 0.21.2