module Merit::BadgeRulesMethods

Public Instance Methods

defined_rules() click to toggle source

Currently defined rules

# File lib/merit/badge_rules_methods.rb, line 26
def defined_rules
  @defined_rules ||= {}
end
grant_on(actions, *args, &block) click to toggle source

Define rule for granting badges

# File lib/merit/badge_rules_methods.rb, line 4
def grant_on(actions, *args, &block)
  options = args.extract_options!

  actions = Array.wrap(actions)

  rule = Rule.new
  rule.badge_id   = options[:badge_id]
  rule.badge_name = options[:badge]
  rule.level      = options[:level]
  rule.to         = options[:to] || :action_user
  rule.multiple   = options[:multiple] || false
  rule.temporary  = options[:temporary] || false
  rule.model_name = options[:model_name] || actions.first.split('#').first
  rule.block      = block

  actions.each do |action|
    defined_rules[action] ||= []
    defined_rules[action] << rule
  end
end