diff --git a/lib/ext/environment.rb b/lib/ext/environment.rb index f1fb8fb..f7c5cbb 100644 --- a/lib/ext/environment.rb +++ b/lib/ext/environment.rb @@ -2,6 +2,6 @@ require_dependency 'environment' class Environment - has_many :gamification_plugin_badges, :class_name => 'GamificationPlugin::Badge', :foreign_key => 'owner_id' + has_many :gamification_plugin_badges, :class_name => 'GamificationPlugin::Badge', :foreign_key => 'owner_id', :source => :owner end diff --git a/lib/merit/badge_rules.rb b/lib/merit/badge_rules.rb index 5bf5d1c..18ddedb 100644 --- a/lib/merit/badge_rules.rb +++ b/lib/merit/badge_rules.rb @@ -41,13 +41,8 @@ module Merit def initialize(environment=nil) return if environment.nil? @environment = environment - # FIXME avoid this - Merit::Badge.all.each { |badge| badge.destroy } - - GamificationPlugin::Badge.all.each do |badge| - # FIXME avoid this - Merit::Badge.create!(:name => badge.name, :id => badge.id, :level => badge.level) # FIXME conflict with multitenancy? + environment.gamification_plugin_badges.all.each do |badge| setting = AVAILABLE_RULES[badge.name.to_sym] grant_on setting[:action], :badge => badge.name, :level => badge.level do |source| setting[:value].call(source) >= (badge.custom_fields || {}).fetch(:threshold, setting[:default_threshold]) diff --git a/lib/merit_badge.rb b/lib/merit_badge.rb new file mode 100644 index 0000000..32384ee --- /dev/null +++ b/lib/merit_badge.rb @@ -0,0 +1,14 @@ +require_dependency 'merit/badge' + +module Merit + + # Delegate find methods to GamificationPlugin::Badge + class Badge + class << self + [:find_by_name_and_level, :find].each do |method| + delegate method, :to => 'GamificationPlugin::Badge' + end + end + end + +end diff --git a/lib/merit_ext.rb b/lib/merit_ext.rb index 0a58fd7..e95508e 100644 --- a/lib/merit_ext.rb +++ b/lib/merit_ext.rb @@ -1,3 +1,5 @@ +require 'merit_badge' + module Merit module ControllerExtensions -- libgit2 0.21.2