Sha256: 6632040cbfb4a51a12ebc09307a7f702e5eea2fdfc9f58677511c9d6898e37ff

Contents?: true

Size: 1.16 KB

Versions: 5

Compression:

Stored size: 1.16 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 = ids.kind_of?(Array) ? ids : [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
  def grant_to(object_or_sash)
    object_or_sash.create_sash_if_none unless object_or_sash.kind_of?(Sash)
    sash = object_or_sash.respond_to?(:sash) ? object_or_sash.sash : object_or_sash
    if sash.badge_ids.include?(id)
      return false
    else
      sash.add_badge(id)
      return true
    end
  end

  # Take out badge from sash
  def delete_from(object_or_sash)
    object_or_sash.create_sash_if_none unless object_or_sash.kind_of?(Sash)
    sash = object_or_sash.respond_to?(:sash) ? object_or_sash.sash : object_or_sash
    if sash.badge_ids.include?(id)
      sash.rm_badge(id)
      return true
    else
      return false
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
merit-0.6.3 app/models/badge.rb
merit-0.6.2 app/models/badge.rb
merit-0.6.1 app/models/badge.rb
merit-0.6.0 app/models/badge.rb
merit-0.5.0 app/models/badge.rb