module Merit::Models::ActionConcern

Public Instance Methods

check_all_rules() click to toggle source

Check rules defined for a merit_action

# File lib/merit/models/action_concern.rb, line 24
def check_all_rules
  mark_as_processed!
  return if had_errors

  check_rules rules_matcher.select_from(Merit::AppBadgeRules), :badges
  check_rules rules_matcher.select_from(Merit::AppPointRules), :points
end
check_unprocessed() click to toggle source
# File lib/merit/models/action_concern.rb, line 18
def check_unprocessed
  where(processed: false).find_each(&:check_all_rules)
end

Private Instance Methods

check_rules(rules_array, badges_or_points) click to toggle source
# File lib/merit/models/action_concern.rb, line 34
def check_rules(rules_array, badges_or_points)
  rules_array.each do |rule|
    judge = Merit::Judge.new(rule, action: self)
    judge.public_send(:"apply_#{badges_or_points}")
  end
end
mark_as_processed!() click to toggle source
# File lib/merit/models/action_concern.rb, line 41
def mark_as_processed!
  self.processed = true
  save
end
rules_matcher() click to toggle source
# File lib/merit/models/action_concern.rb, line 46
def rules_matcher
  @rules_matcher ||= ::Merit::RulesMatcher.new(target_model, action_method)
end