Skip to content
Easily maintain a collection of Tag instances with aggregate counts from your model's tags.
Ruby
Branch: master
Clone or download
This branch is 3 commits behind mongoid:master.

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples
lib
spec
.gitignore
.rspec
.rubocop.yml
.rubocop_todo.yml
.travis.yml
CHANGELOG.md
CONTRIBUTING.md
Gemfile
LICENSE.md
README.md
Rakefile
mongoid-tag-collectible.gemspec

README.md

Mongoid::TagCollectible

Gem Version Build Status Dependency Status Code Climate

Easily maintain a collection of Tag instances with aggregate counts from your model's tags.

Compatibility

This gem supports Mongoid 3, Mongoid 4 and Mongoid 5.

Install

Add mongoid-tag-collectible to your Gemfile.

gem 'mongoid-tag-collectible'

Use

class Thing
  include Mongoid::Document
  include Mongoid::TagCollectible::Tagged
end

thing1 = Thing.create!(tags: [ 'funny', 'red' ])
thing2 = Thing.create!(tags: [ 'funny', 'yellow' ])

funny_tag = ThingTag.find('funny') # find by tag
funny_tag.name # "funny"
funny_tag.count # 2, not a database query
funny_tag.tagged # thing1 and thing2

Renaming Tags

You can rename a tag, which causes all the tags in your model's tags collection to be renamed.

ThingTag.find('funny').update_attributes!(name: 'sad')

Thing.first.tags # [ 'sad', 'red' ]

Destroying Tags

You can destroy a tag, which also removes it from your model's tags collection.

ThingTag.find('red').destroy
Thing.first.tags # [ 'sad' ]

Case-Sensitive

Tags are case-sensitive. Transform your tags in before_validation if you don't want this behavior.

class Thing
  before_validation :downcase_tags

  private

  def downcase_tags
    tags = tags.map(&:downcase) if tags
  end
end

Contribute

See CONTRIBUTING.

Copyright and License

Copyright Daniel Doubrovkine and Contributors, Artsy Inc., 2013-2015

MIT License

You can’t perform that action at this time.