Taggable Plugin
This plugin provides an alternative to the Acts as Taggable hosted at grails.org and with the following features.
- Classes can be made taggable by implementing the
org.grails.taggable.Taggable interface
- Method chaining can be used to add tags
- The table name the domain classes use is customizable
- Utilizes extensive caching to improve performance
- Property use of packages to avoid domain conflicts
Requirements
Grails Version: 1.1 and above
JDK: 1.5 and above
Installation
grails install-plugin taggable
Usage
Implement the
Taggable interface:
import org.grails.taggable.*class Vehicle implements Taggable {
}Add some tags:
def v = Vehicle.get(1)v.addTag("red")
.addTag("sporty")
.addTag("expensive")Query:
def v = Vehicle.get(1)
println v.tagsdef vehicles = Vehicle.findAllByTag("sporty")
def count = Vehicle.countByTag("sporty")assert 3 == Vehicle.totalTags
assert ['expensive', 'red','sporty'] == Vehicle.allTagsTag parsing:
def tags = "red,sporty,expensive"
def v = Vehicle.get(1)v.parseTags(tags)
assert ['expensive', 'red','sporty'] == v.tagstags = "red/sporty/expensive"v.parseTags(tags, "/")
assert ['expensive', 'red','sporty'] == v.tags
Customized Table names in Config.groovy:
grails.taggable.tag.table="MY_TAGS"
grails.taggable.tagLink.table="MY_TAG_LINKS"