Sha256: 3a9bec6a8db4cd29bf68b0155dcbf6366ac4d28672116ec07fa62bbe7dd0e0a1
Contents?: true
Size: 1.3 KB
Versions: 1
Compression:
Stored size: 1.3 KB
Contents
class MeritAction < ActiveRecord::Base # Check rules defined for a merit_action def check_badge_rules(defined_rules) action_name = "#{target_model}\##{action_method}" # Check Badge rules if defined_rules[action_name].present? defined_rules[action_name].each do |rule| rule.grant_or_delete_badge(self) end end # Check Point rules actions_to_point = MeritPointRules.new.actions_to_point if actions_to_point[action_name].present? point_rule = actions_to_point[action_name] point_rule[:to].each do |to| if to == :action_user if !(target = User.find_by_id(user_id)) Rails.logger.warn "[merit] no user found to grant points" return end else begin target = target_object.send(to) rescue Rails.logger.warn "[merit] No target_object found on check_badge_rules." return end end target.update_attribute(:points, target.points + point_rule[:score]) end end processed! end # Action's target object def target_object klass = target_model.singularize.camelize.constantize klass.find_by_id(target_id) end # Mark merit_action as processed def processed! self.update_attribute(:processed, true) end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
merit-0.1.3 | app/models/merit_action.rb |