module Badginator::Nominee
Public Class Methods
included(base)
click to toggle source
# File lib/badginator/nominee.rb, line 4 def self.included(base) base.class_eval { has_many :badges, class_name: "AwardedBadge", as: :awardee } end
Public Instance Methods
has_badge?(badge_code)
click to toggle source
# File lib/badginator/nominee.rb, line 29 def has_badge?(badge_code) AwardedBadge.where(badge_code: badge_code, awardee: self).first end
try_award_badge(badge_name, context = {})
click to toggle source
# File lib/badginator/nominee.rb, line 10 def try_award_badge(badge_name, context = {}) badge = Badginator.get_badge(badge_name) success = badge.condition.call(self, context) if success if (self.has_badge?(badge_name)) status = Badginator::Status(Badginator::ALREADY_WON) else awarded_badge = AwardedBadge.create! awardee: self, badge_code: badge.code status = Badginator::Status(Badginator::WON, awarded_badge) end else status = Badginator::Status(Badginator::DID_NOT_WIN) end status end