categoryz3 0.6 → 0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +4 -11
- data/lib/categoryz3/categorizable.rb +1 -25
- data/lib/categoryz3/version.rb +1 -1
- metadata +4 -4
data/README.rdoc
CHANGED
@@ -16,12 +16,12 @@ Fetches items in any level of subcategories with a single join.
|
|
16
16
|
action_category = Categoryz3::Category.create(name: 'horror', parent: genres_category)
|
17
17
|
|
18
18
|
horror_movie = Movie.find(1)
|
19
|
-
horror_movie.
|
19
|
+
horror_movie.categories << cult_horror_category
|
20
20
|
horror_movie.categories
|
21
21
|
#=> [cult_horror_category]
|
22
22
|
|
23
23
|
action_movie = Movie.find(2)
|
24
|
-
action_movie.
|
24
|
+
action_movie.categories << action_category
|
25
25
|
|
26
26
|
Movie.inside_category(genres_category).all
|
27
27
|
#=> [horror_movie, action_movie]
|
@@ -54,7 +54,7 @@ Include the categorizable module in the models you want to categorize:
|
|
54
54
|
|
55
55
|
=== Listing categories from an object
|
56
56
|
|
57
|
-
You can use the
|
57
|
+
You can use the relation `categories` to list all categories from a model:
|
58
58
|
|
59
59
|
model.categories
|
60
60
|
#=> [category1, category2]
|
@@ -68,16 +68,9 @@ You can also use the `categories_list`, this will return the categories ids:
|
|
68
68
|
|
69
69
|
There are 2 ways for adding categories to an object:
|
70
70
|
|
71
|
-
model.
|
72
|
-
model.category = [category1, category2, category3]
|
73
|
-
# alias_method :categories=, :category=
|
74
|
-
|
75
|
-
Replaces the object categories for the given ones.
|
76
|
-
|
71
|
+
model.categories << category
|
77
72
|
model.categories_list = "1, 2, 3"
|
78
73
|
|
79
|
-
Replaces the object categories for the ones with ids 1, 2 and 3.
|
80
|
-
|
81
74
|
=== Removing categories from an object
|
82
75
|
|
83
76
|
To remove a category from the model, you can use the `remove_category` method:
|
@@ -16,35 +16,11 @@ module Categoryz3
|
|
16
16
|
included do
|
17
17
|
has_many :direct_category_items , class_name: 'Categoryz3::Item' , as: :categorizable
|
18
18
|
has_many :child_category_items , class_name: 'Categoryz3::ChildItem' , as: :categorizable
|
19
|
+
has_many :categories, through: :direct_category_items, as: :categorizable, class_name: 'Categoryz3::Category'
|
19
20
|
scope :inside_category , ->(category) { joins(:child_category_items).where('categoryz3_child_items.category_id = ?' , category.id) }
|
20
21
|
scope :having_category , ->(category) { joins(:direct_category_items).where('categoryz3_items.category_id = ?' , category.id) }
|
21
22
|
end
|
22
23
|
|
23
|
-
# Public: List all object categories
|
24
|
-
# Categories are retrieved from direct_category_items association, no subcategories included
|
25
|
-
#
|
26
|
-
def categories
|
27
|
-
return @categories if @categories
|
28
|
-
category_ids = direct_category_items.all.map { |category| category.id }
|
29
|
-
@categories = Categoryz3::Category.where(id: category_ids)
|
30
|
-
end
|
31
|
-
|
32
|
-
# Public: Adds a category, or categories, to the model
|
33
|
-
#
|
34
|
-
# Examples:
|
35
|
-
#
|
36
|
-
# categorizable_object.category = dummy_category
|
37
|
-
# categorizable_object.categories = [dummy_category1, dummy_category2]
|
38
|
-
#
|
39
|
-
def category=(categories)
|
40
|
-
self.direct_category_items.destroy_all
|
41
|
-
[categories].flatten.each do |category|
|
42
|
-
category.direct_items.create(categorizable: self) if category
|
43
|
-
end
|
44
|
-
@categories = nil
|
45
|
-
end
|
46
|
-
alias_method :categories=, :category=
|
47
|
-
|
48
24
|
# Public: Removes a category, or categories, from the model
|
49
25
|
#
|
50
26
|
# Examples:
|
data/lib/categoryz3/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: categoryz3
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.7'
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-11-
|
12
|
+
date: 2012-11-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -132,7 +132,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
132
132
|
version: '0'
|
133
133
|
segments:
|
134
134
|
- 0
|
135
|
-
hash:
|
135
|
+
hash: 3253231323559020203
|
136
136
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
137
137
|
none: false
|
138
138
|
requirements:
|
@@ -141,7 +141,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
141
141
|
version: '0'
|
142
142
|
segments:
|
143
143
|
- 0
|
144
|
-
hash:
|
144
|
+
hash: 3253231323559020203
|
145
145
|
requirements: []
|
146
146
|
rubyforge_project:
|
147
147
|
rubygems_version: 1.8.24
|