Sha256: 2e11df24dd0ee594352855f58ec914bb80d70b4beb3dbedb99ad1c32f6537b09

Contents?: true

Size: 855 Bytes

Versions: 3

Compression:

Stored size: 855 Bytes

Contents

module Merit
  # Sash is a container for reputation data for meritable models. It's an
  # indirection between meritable models and badges and scores (one to one
  # relationship).
  #
  # It's existence make join models like badges_users and scores_users
  # unnecessary. It should be transparent at the application.
  class Sash
    include Mongoid::Document
    include Mongoid::Timestamps
    include Base::Sash

    has_many :badges_sashes, class_name: 'Merit::BadgesSash', dependent: :destroy
    has_many :scores, class_name: 'Merit::Score', dependent: :destroy

    after_create :create_scores

    def add_badge(badge_id)
      bs = Merit::BadgesSash.new(badge_id: badge_id)
      badges_sashes.push(bs)
    end

    def rm_badge(badge_id)
      bs = badges_sashes.where(badge_id: badge_id).first
      badges_sashes.delete(bs)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
merit-2.0.0 lib/merit/models/mongoid/merit/sash.rb
merit-1.9.0 lib/merit/models/mongoid/merit/sash.rb
merit-1.8.0 lib/merit/models/mongoid/merit/sash.rb