Last updated by 5 years ago

Page: Taggable Plugin, Version:3

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.tags

def vehicles = Vehicle.findAllByTag("sporty") def count = Vehicle.countByTag("sporty")

assert 3 == Vehicle.totalTags assert ['expensive', 'red','sporty'] == Vehicle.allTags

Tag parsing:

def tags = "red,sporty,expensive"
def v = Vehicle.get(1)

v.parseTags(tags) assert ['expensive', 'red','sporty'] == v.tags

tags = "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"