Sha256: e6e243e1739ba6654a386ea3472b3924a670e5bc666c6864d8560c1767a2a245
Contents?: true
Size: 1.22 KB
Versions: 3
Compression:
Stored size: 1.22 KB
Contents
require 'ambry' require 'ambry/active_model' class Badge extend Ambry::Model extend Ambry::ActiveModel field :id, :name, :level, :image, :description validates_presence_of :id, :name validates_uniqueness_of :id filters do def find_by_id(ids) ids = Array.wrap(ids) find{|b| ids.include? b[:id] } end def by_name(name) find{|b| b.name == name.to_s } end def by_level(level) find{|b| b.level.to_s == level.to_s } end end # Grant badge to sash # Accepts :allow_multiple boolean option, defaults to false def grant_to(object_or_sash, *args) options = args.extract_options! options[:allow_multiple] ||= false sash = sash_from(object_or_sash) if !sash.badge_ids.include?(id) || options[:allow_multiple] sash.add_badge(id) true else false end end # Take out badge from sash def delete_from(object_or_sash) sash = sash_from(object_or_sash) if sash.badge_ids.include?(id) sash.rm_badge(id) true else false end end def sash_from(object_or_sash) if object_or_sash.kind_of?(Sash) object_or_sash else object_or_sash.sash || object_or_sash.create_sash_and_scores end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
merit-1.1.0 | app/models/badge.rb |
merit-1.0.1 | app/models/badge.rb |
merit-1.0.0 | app/models/badge.rb |