Module: HasMachineTags::TagMethods
- Defined in:
- lib/has_machine_tags/tag_methods.rb
Overview
Since this closely resembles object modeling, we can start to use tagging to form relationships between tagged items and other objects.
Defined Under Namespace
Modules: ClassMethods, InstanceMethods
Constant Summary collapse
- NAMESPACE_REGEX =
"[a-z](?:[a-z0-9_]+)"- PREDICATE_REGEX =
"[a-z](?:[a-z0-9_-]+)"- VALUE_REGEX =
'.+'- PREDICATE_DELIMITER =
TODO: use delimiters in this file
':'- VALUE_DELIMITER =
'='
Class Method Summary collapse
-
.included(base) ⇒ Object
:nodoc:.
Class Method Details
.included(base) ⇒ Object
:nodoc:
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/has_machine_tags/tag_methods.rb', line 74 def self.included(base) #:nodoc: name_format = /\A(([^\*\=\:\.,]+)|(#{NAMESPACE_REGEX}\:#{PREDICATE_REGEX}\=#{VALUE_REGEX}))\Z/ base.class_eval %[ has_many :taggings validates_presence_of :name validates_uniqueness_of :name before_save :update_name_related_columns #disallow machine tags special characters and tag list delimiter OR allow machine tag format validates_format_of :name, :with=>name_format ] base.extend(ClassMethods) base.send :include, InstanceMethods end |