docbrown/app/workers/rating_votes/assign_rating_worker.rb
Alex 393ba00221
Remove Elasticsearch ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ (#13606)
* Attempt number 1

* Fix rack_attack specs

* Fix users_searches_users spec

* Fix display_users_search_spec

* Fix comment typo

* Remove search:destroy task from cypress

* Remove port 9300 from gitpod

* Stub response in attack_spec
2021-05-03 11:09:45 -04:00

21 lines
627 B
Ruby

module RatingVotes
class AssignRatingWorker
include Sidekiq::Worker
sidekiq_options queue: :low_priority, retry: 10, lock: :until_executing
def perform(article_id, group = "experience_level")
article = Article.find_by(id: article_id)
return unless article
ratings = article.rating_votes.where(group: group).pluck(:rating)
average = ratings.sum / ratings.size
article.update_columns(
experience_level_rating: average,
experience_level_rating_distribution: ratings.max - ratings.min,
last_experience_level_rating_at: Time.current,
)
end
end
end