|
- class RewardGradeService < ApplicationService
- attr_reader :user, :attrs, :not_unique
-
- def initialize(user, **attrs)
- @user = user
- @not_unique = attrs.delete(:not_unique) || false
- @attrs = attrs.slice(*%i[container_id container_type score])
- end
-
- def call
- return if user.grades.exists?(attrs) && !not_unique
-
- ActiveRecord::Base.transaction do
- grade = user.grades.create!(attrs)
-
- user.increment!(:grade, grade.score)
- end
- end
- end
|