acts_as_category 0.0.5 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
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