Sha256: ded04ace7c37dc1b7b18e103d78b76f2e94cb70b49403ad6e96641c020814a8d
Contents?: true
Size: 1.43 KB
Versions: 19
Compression:
Stored size: 1.43 KB
Contents
# Merit::Action general schema # ______________________________________________________________ # source | action | target # user_id | method,value | model,id | processed # ______________________________________________________________ # 1 | comment nil | List 8 | true # 1 | vote 3 | List 12 | true # 3 | follow nil | User 1 | false # X | create nil | User #{generated_id} | false # ______________________________________________________________ # # Rules relate to merit_actions by action name ('controller#action' string) module Merit::Models module ActionConcern extend ActiveSupport::Concern class_methods do def check_unprocessed where(processed: false).find_each(&:check_all_rules) end end # Check rules defined for a merit_action 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 private 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 def mark_as_processed! self.processed = true save end def rules_matcher @rules_matcher ||= ::Merit::RulesMatcher.new(target_model, action_method) end end end
Version data entries
19 entries across 19 versions & 2 rubygems