Module: Polytag
- Defined in:
- lib/polytag.rb,
lib/polytag/version.rb,
lib/generators/polytag/install/install_generator.rb
Defined Under Namespace
Modules: ClassMethods, Generators
Classes: Tag, TagGroup, TagRelation
Constant Summary
collapse
- VERSION =
"0.0.3"
Class Method Summary
collapse
Instance Method Summary
collapse
Class Method Details
.included(base) ⇒ Object
8
9
10
11
12
13
14
|
# File 'lib/polytag.rb', line 8
def self.included(base)
base.extend(ClassMethods)
base.has_many :polytag_tag_relations, as: :tagged, class_name: '::Polytag::TagRelation'
base.has_many :polytag_tags, through: :polytag_tag_relations, class_name: '::Polytag::Tag'
base.__send__(:alias_method, :tag_relations, :polytag_tag_relations) unless base.method_defined?(:tag_relations)
base.__send__(:alias_method, :tags, :polytag_tags) unless base.method_defined?(:tags)
end
|
Instance Method Details
#add_tag(tag, _tag_group = {}) ⇒ Object
28
29
30
|
# File 'lib/polytag.rb', line 28
def add_tag(tag, _tag_group = {})
polytag_tags << polytag_tags.where(name: tag, polytag_tag_group_id: tag_group(_tag_group).try(&:id)).first_or_initialize
end
|
#add_tag!(tag, _tag_group = {}) ⇒ Object
32
33
34
|
# File 'lib/polytag.rb', line 32
def add_tag!(tag, _tag_group = {})
polytag_tags << polytag_tags.where(name: tag, polytag_tag_group_id: tag_group(_tag_group).try(&:id)).first_or_create
end
|
36
37
38
39
|
# File 'lib/polytag.rb', line 36
def add_tags(*_tags)
_tag_group = _tags.pop if _tags.last.is_a?(Hash)
_tags.map { |x| add_tag(x, _tag_group || {}) }
end
|
41
42
43
44
|
# File 'lib/polytag.rb', line 41
def add_tags!(*_tags)
_tag_group = _tags.pop if _tags.last.is_a?(Hash)
_tags.map { |x| add_tag!(x, _tag_group || {}) }
end
|
#remove_tag!(tag, _tag_group = {}) ⇒ Object
46
47
48
49
|
# File 'lib/polytag.rb', line 46
def remove_tag!(tag, _tag_group = {})
tag_id = polytag_tags.where(name: tag, polytag_tag_group_id: tag_group(_tag_group).try(&:id)).first.try(:id)
tag_relations.where("polytag_tag_relations.polytag_tag_id = ?", tag_id).delete_all
end
|
#tag_group(_tag_group = nil) ⇒ Object
16
17
18
19
20
21
22
23
24
25
26
|
# File 'lib/polytag.rb', line 16
def tag_group(_tag_group = nil)
@__polytag_tag_group_hash__ ||= {}
if _tag_group
@__polytag_tag_group_hash__.merge!(_tag_group)
@__polytag_tag_group__ = Polytag::TagGroup.search_by_hash(@__polytag_tag_group_hash__).first_or_create
else
@__polytag_tag_group_hash__ = {} if _tag_group.is_a?(Hash) && _tag_group.empty?
@__polytag_tag_group__
end
end
|