acts_as_category 0.0.5 → 0.0.8

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.md CHANGED
@@ -18,11 +18,46 @@ Or install it yourself as:
18
18
 
19
19
  ## Usage
20
20
 
21
- acts_as_category
22
- Category.used_by(Topic)
23
- Category.used_by(@forum)
24
- @category.used_by?(Topic)
25
- @category.used_by?(@topic)
21
+ ```
22
+ rails generator model category
23
+ ```
24
+
25
+ ```
26
+ create_table :categories do |t|
27
+ t.string :name
28
+ t.string :model
29
+ t.string :context
30
+ t.references :resource, :polymorphic => true
31
+ t.timestamps
32
+ end
33
+ ```
34
+
35
+ ```ruby
36
+ class Category < ActiveRecord::Base
37
+ attr_accessible :name
38
+ acts_as_category
39
+ end
40
+
41
+ class Forum < ActiveRecord::Base
42
+ attr_accessible :name
43
+ end
44
+
45
+ class Topic < ActiveRecord::Base
46
+ attr_accessible :title
47
+ end
48
+ ```
49
+
50
+ ```ruby
51
+ Category.used_for
52
+ Category.used_for('category')
53
+ Category.used_for(Topic)
54
+ Category.used_for(Topic, 'category')
55
+ Category.used_for(Topic, 'location')
56
+ Category.used_for(@forum)
57
+ Category.used_for(@forum, 'location')
58
+ Category.used_for(@forum, Topic)
59
+ Category.used_for(@forum, Topic, 'location')
60
+ ```
26
61
 
27
62
  ## Contributing
28
63
 
@@ -9,21 +9,32 @@ module ActsAsCategory
9
9
  module ClassMethods
10
10
  def acts_as_category
11
11
  class_eval <<-EOV
12
+
12
13
  belongs_to :resource, :polymorphic => true
13
- scope :used_by, lambda { |resource| where(:resource_type => resource) }
14
+
15
+ def self.used_for(*resources)
16
+ model = context = resource_id = resource_type = nil
17
+ resources.each do |resource|
18
+ if resource.kind_of?(ActiveRecord::Base)
19
+ resource_id ||= resource.id
20
+ resource_type ||= resource.class
21
+ elsif resource.is_a?(Class)
22
+ model ||= resource.to_s
23
+ else
24
+ context ||= resource
25
+ end
26
+ end
27
+ where(:model => model, :context => context, :resource_id => resource_id, :resource_type => resource_type)
28
+ end
29
+
14
30
  include InstanceMethods
31
+
15
32
  EOV
16
33
  end
17
34
  end
18
35
 
19
36
  module InstanceMethods
20
- def used_by?(resource)
21
- if resource.is_a?(Class)
22
- self.class.where(:resource_type => resource).size > 0
23
- else
24
- self.class.where(:resource_id => resource, :resource_type => resource.class).size > 0
25
- end
26
- end
37
+
27
38
  end
28
39
 
29
40
  end
@@ -1,3 +1,3 @@
1
1
  module ActsAsCategory
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.8"
3
3
  end
metadata CHANGED
@@ -1,7 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts_as_category
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.8
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - wuwx
@@ -13,6 +14,7 @@ dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: bundler
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
19
  - - ~>
18
20
  - !ruby/object:Gem::Version
@@ -20,6 +22,7 @@ dependencies:
20
22
  type: :development
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
27
  - - ~>
25
28
  - !ruby/object:Gem::Version
@@ -27,15 +30,17 @@ dependencies:
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: rake
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
- - - '>='
35
+ - - ! '>='
32
36
  - !ruby/object:Gem::Version
33
37
  version: '0'
34
38
  type: :development
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
- - - '>='
43
+ - - ! '>='
39
44
  - !ruby/object:Gem::Version
40
45
  version: '0'
41
46
  description: acts_as_category
@@ -56,25 +61,27 @@ files:
56
61
  homepage: http://github.com/wuwx/acts_as_category
57
62
  licenses:
58
63
  - MIT
59
- metadata: {}
60
64
  post_install_message:
61
65
  rdoc_options: []
62
66
  require_paths:
63
67
  - lib
64
68
  required_ruby_version: !ruby/object:Gem::Requirement
69
+ none: false
65
70
  requirements:
66
- - - '>='
71
+ - - ! '>='
67
72
  - !ruby/object:Gem::Version
68
73
  version: '0'
69
74
  required_rubygems_version: !ruby/object:Gem::Requirement
75
+ none: false
70
76
  requirements:
71
- - - '>='
77
+ - - ! '>='
72
78
  - !ruby/object:Gem::Version
73
79
  version: '0'
74
80
  requirements: []
75
81
  rubyforge_project:
76
- rubygems_version: 2.0.0.rc.2
82
+ rubygems_version: 1.8.24
77
83
  signing_key:
78
- specification_version: 4
84
+ specification_version: 3
79
85
  summary: acts_as_category
80
86
  test_files: []
87
+ has_rdoc:
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: e4a7d424cb3424fa5652747531abd34ffab8ce00
4
- data.tar.gz: 3e0e8576b984c9d4c1336c630ee09164159f6d24
5
- SHA512:
6
- metadata.gz: b95be35fb08422b0643d3b2f7b0a03a5847574b17077393a839776a92499d9a00eb5d3fb293a2f959b12b596b24734e1517124b32d2be6c82a1f54eefaf32d74
7
- data.tar.gz: b39e1fc465512b581573e64ac9eb6090225d8253440b4a0cd734707a91fba162c447ce5b1309cb79dbb0e52849971d8b9c173c27cf722b3ce189328299c49f7b