mongoid_rateable 0.3.0 → 0.3.1
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/CHANGELOG.md +1 -3
- data/README.rdoc +20 -21
- data/VERSION +1 -1
- data/lib/mongoid_rateable.rb +6 -1
- data/lib/mongoid_rateable/rateable.rb +22 -2
- data/mongoid_rateable.gemspec +2 -2
- data/spec/models/comment.rb +1 -2
- metadata +3 -3
data/CHANGELOG.md
CHANGED
@@ -3,8 +3,6 @@
|
|
3
3
|
*0.3.0*
|
4
4
|
|
5
5
|
Removed RATING_RANGE constant.
|
6
|
-
The RATING_RANGE constant is very inflexible. Much better with a class method, since
|
7
|
-
it allows for reusability, definint the range in a module that is pulled into
|
8
|
-
several classes etc.
|
6
|
+
The RATING_RANGE constant is very inflexible. Much better with a class method, since it allows for reusability, definint the range in a module that is pulled into several classes etc.
|
9
7
|
|
10
8
|
Instead this gem now includes several other config methods.
|
data/README.rdoc
CHANGED
@@ -15,45 +15,44 @@ Add to Gemfile:
|
|
15
15
|
|
16
16
|
== Getting Started
|
17
17
|
|
18
|
-
|
19
|
-
|
18
|
+
|
19
|
+
Simply use the `rateable` macro from any class that is a Mongoid Document.
|
20
|
+
|
21
|
+
This macro will include `Mongoid::Rateable` into the class and configure the rating functionality using the options hash. For any option not present, the default option value will be used.
|
20
22
|
|
21
23
|
class Post
|
22
24
|
include Mongoid::Document
|
23
|
-
include Mongoid::Rateable
|
24
25
|
|
25
|
-
|
26
|
+
rateable range: (-5..7), raters: [User, Admin]
|
26
27
|
end
|
27
28
|
|
28
|
-
|
29
|
+
You can also set the `default_rater`
|
29
30
|
|
30
31
|
class Post
|
31
32
|
include Mongoid::Document
|
32
|
-
include Mongoid::Rateable
|
33
|
-
|
34
|
-
# class method
|
35
|
-
def self.rating_range
|
36
|
-
(1..5) # should always return the same range
|
37
|
-
end
|
38
33
|
|
39
|
-
#
|
40
|
-
|
34
|
+
# will simply call the 'owner' method to find the default rater
|
35
|
+
# if no rater given when rating
|
41
36
|
|
42
|
-
|
37
|
+
rateable range: (-5..7), raters: [User, Admin], default_rater: 'owner'
|
43
38
|
end
|
44
39
|
|
45
|
-
or
|
46
|
-
|
47
40
|
class Post
|
48
41
|
include Mongoid::Document
|
49
|
-
include Mongoid::Rateable
|
50
42
|
|
51
|
-
#
|
52
|
-
|
53
|
-
|
54
|
-
|
43
|
+
# if given a block, this will be used as a dynamic way to find
|
44
|
+
# the a rater in case no rater is passed in as the 2nd argument to
|
45
|
+
# the rate method
|
46
|
+
|
47
|
+
rateable range: (-5..7), raters: [User, Admin] do
|
48
|
+
# will by default be rated by the last user
|
49
|
+
# who made a comment to this post!
|
50
|
+
comments.last.user
|
51
|
+
end
|
55
52
|
end
|
56
53
|
|
54
|
+
Note: For even more control over the configuration, see the `ClassMethods` module code in `rateable.rb`.
|
55
|
+
|
57
56
|
== Cast Rates
|
58
57
|
|
59
58
|
You can rate by passing an integer and a rater model to the "rate" method:
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.1
|
data/lib/mongoid_rateable.rb
CHANGED
@@ -2,6 +2,20 @@ module Mongoid
|
|
2
2
|
module Rateable
|
3
3
|
extend ActiveSupport::Concern
|
4
4
|
|
5
|
+
module Ext
|
6
|
+
extend ActiveSupport::Concern
|
7
|
+
|
8
|
+
module ClassMethods
|
9
|
+
def rateable options = {}
|
10
|
+
class_eval do
|
11
|
+
self.send :include, Mongoid::Rateable
|
12
|
+
puts "options: #{options}"
|
13
|
+
self.rate_config options
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
5
19
|
included do
|
6
20
|
field :rates, type: Integer, default: 0
|
7
21
|
field :rating, type: Float, default: nil
|
@@ -44,6 +58,8 @@ module Mongoid
|
|
44
58
|
Range.new arr.first, arr.last
|
45
59
|
when Range
|
46
60
|
range
|
61
|
+
when nil
|
62
|
+
(1..5)
|
47
63
|
else
|
48
64
|
raise ArgumentError, "Must be a range, was: #{range}"
|
49
65
|
end
|
@@ -55,15 +71,17 @@ module Mongoid
|
|
55
71
|
|
56
72
|
def rateable_by *clazzes
|
57
73
|
@rater_classes = []
|
74
|
+
return if clazzes.compact.empty?
|
58
75
|
clazzes.each do |clazz|
|
59
76
|
raise ArgumentError, "A rateable must be a class, was: #{clazz}" unless clazz.respond_to?(:new)
|
60
77
|
@rater_classes << clazz
|
61
78
|
end
|
62
79
|
end
|
63
80
|
|
64
|
-
def rate_config options = {}
|
81
|
+
def rate_config options = {}, &block
|
65
82
|
set_rating_range options[:range]
|
66
83
|
rateable_by options[:raters]
|
84
|
+
default_rater options[:default_rater], &block
|
67
85
|
end
|
68
86
|
|
69
87
|
def default_rater rater=nil, &block
|
@@ -73,10 +91,12 @@ module Mongoid
|
|
73
91
|
self.send(rater) # fx to use owner or user relation
|
74
92
|
end
|
75
93
|
when nil
|
76
|
-
|
94
|
+
return unless block_given?
|
77
95
|
define_method :default_rater do
|
78
96
|
self.instance_eval(&block)
|
79
97
|
end
|
98
|
+
else
|
99
|
+
raise ArgumentError, "Must take symbol or block argument"
|
80
100
|
end
|
81
101
|
end
|
82
102
|
end # class methods
|
data/mongoid_rateable.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "mongoid_rateable"
|
8
|
-
s.version = "0.3.
|
8
|
+
s.version = "0.3.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Peter Savichev (proton)"]
|
12
|
-
s.date = "2012-
|
12
|
+
s.date = "2012-12-07"
|
13
13
|
s.description = "Provides fields and methods for the rating manipulation on Mongoid documents."
|
14
14
|
s.email = "psavichev@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
data/spec/models/comment.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongoid_rateable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
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-
|
12
|
+
date: 2012-12-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mongoid
|
@@ -168,7 +168,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
168
168
|
version: '0'
|
169
169
|
segments:
|
170
170
|
- 0
|
171
|
-
hash:
|
171
|
+
hash: -55772387
|
172
172
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
173
173
|
none: false
|
174
174
|
requirements:
|