problem_destroy.rb 553 Bytes
class ProblemDestroy

  attr_reader :problem

  def initialize(problem)
    @problem = problem
  end

  def execute
    delete_errs
    delete_comments
    problem.delete
  end

  private

  def errs_id
    problem.errs.only(:id).map(&:id)
  end

  def comments_id
    problem.comments.only(:id).map(&:id)
  end

  def delete_errs
    Err.collection.remove(:_id => { '$in' => errs_id })
    Notice.collection.remove(:err_id => { '$in' => errs_id })
  end

  def delete_comments
    Comment.collection.remove(:_id => { '$in' => comments_id })
  end

end