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.4"
Class Method Summary
collapse
Instance Method Summary
collapse
Class Method Details
.included(base) ⇒ Object
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
# File 'lib/polytag.rb', line 8
def self.included(base)
base.extend(ClassMethods)
base.has_many :polytag_tag_relations, class_name: '::Polytag::TagRelation',
as: :tagged
base.has_many :tag_relations, class_name: '::Polytag::TagRelation',
as: :tagged
base.has_many :polytag_tags, class_name: '::Polytag::Tag',
through: :polytag_tag_relations
base.has_many :tags, class_name: '::Polytag::Tag',
through: :polytag_tag_relations,
source: :polytag_tag
end
|
Instance Method Details
#add_tag(tag, _tag_group = {}) ⇒ Object
36
37
38
|
# File 'lib/polytag.rb', line 36
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
40
41
42
|
# File 'lib/polytag.rb', line 40
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
|
44
45
46
47
|
# File 'lib/polytag.rb', line 44
def add_tags(*_tags)
_tag_group = _tags.pop if _tags.last.is_a?(Hash)
_tags.map { |x| add_tag(x, _tag_group || {}) }
end
|
49
50
51
52
|
# File 'lib/polytag.rb', line 49
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
54
55
56
57
|
# File 'lib/polytag.rb', line 54
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
24
25
26
27
28
29
30
31
32
33
34
|
# File 'lib/polytag.rb', line 24
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
|