recognition 0.3.7 → 0.3.8
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +11 -6
- data/lib/recognition/activerecord/voucher.rb +4 -4
- data/lib/recognition/database.rb +21 -0
- data/lib/recognition/version.rb +1 -1
- metadata +3 -3
data/README.md
CHANGED
@@ -61,6 +61,12 @@ app/models/post.rb:
|
|
61
61
|
recognize :user, for: :destroy, loss: 2, maximum: 4
|
62
62
|
end
|
63
63
|
|
64
|
+
**Important:**
|
65
|
+
Due to the way Ruby method aliasing work, if you need to recognize users for
|
66
|
+
non-ActiveRecord actions (anything that's not :create, :update and :destroy),
|
67
|
+
make sure you add the `recognize` line *after* the method you want to
|
68
|
+
recognize the user for.
|
69
|
+
|
64
70
|
app/controllers/profiles_controller.rb:
|
65
71
|
|
66
72
|
class ProfilesController < ApplicationController
|
@@ -86,6 +92,11 @@ Your model might have the following attributes:
|
|
86
92
|
* `:expires_at` _optional_
|
87
93
|
* `:reusable` _optional_
|
88
94
|
|
95
|
+
You can specify the following extra parameters for vouchers:
|
96
|
+
|
97
|
+
* `:prefix` can be a number, string or method name or even an anonymous function.
|
98
|
+
* `:suffix` can be a number, string or method name or even an anonymous function.
|
99
|
+
|
89
100
|
app/models/voucher.rb:
|
90
101
|
|
91
102
|
class Voucher < ActiveRecord::Base
|
@@ -98,12 +109,6 @@ Then, you may do:
|
|
98
109
|
voucher = Voucher.create!(amount: 20, expires_at: (DateTime.now + 1.day), reusable: true)
|
99
110
|
voucher.redeem current_user
|
100
111
|
|
101
|
-
**Note:**
|
102
|
-
Due to the way Ruby method aliasing work, if you need to recognize users for
|
103
|
-
non-ActiveRecord actions (anything that's not :create, :update and :destroy),
|
104
|
-
make sure you add the `recognize` line *after* the method you want to
|
105
|
-
recognize the user for.
|
106
|
-
|
107
112
|
## Example
|
108
113
|
The following won't work:
|
109
114
|
|
@@ -1,12 +1,12 @@
|
|
1
1
|
module Recognition
|
2
2
|
module ActiveRecord
|
3
3
|
module Voucher
|
4
|
-
# class_attribute :voucher_validators
|
5
|
-
|
6
4
|
def regenerate_code
|
7
|
-
|
5
|
+
prefix = Recognition::Database.parse_voucher_part(self.class.recognitions[:prefix], self)
|
6
|
+
suffix = Recognition::Database.parse_voucher_part(self.class.recognitions[:suffix], self)
|
7
|
+
l = (self.class.recognitions[:code_length] - (prefix.length + suffix.length)) || 10
|
8
8
|
dict = [('a'..'z'),('A'..'Z'),(0..9)].map{|i| i.to_a}.flatten
|
9
|
-
code = (1..l).map{ dict[rand(dict.length)] }.join
|
9
|
+
code = (1..l).map{ dict[rand(dict.length)] }.prepend(prefix).append(suffix).join
|
10
10
|
# Prevent code collision at all costs
|
11
11
|
if self.class.to_s.constantize.find_all_by_code(code).any?
|
12
12
|
regenerate_code
|
data/lib/recognition/database.rb
CHANGED
@@ -71,6 +71,26 @@ module Recognition
|
|
71
71
|
Database.get_user_counter id, bucket
|
72
72
|
end
|
73
73
|
|
74
|
+
def self.parse_voucher_part part, object
|
75
|
+
case part.class.to_s
|
76
|
+
when 'String'
|
77
|
+
value = part
|
78
|
+
when 'Integer'
|
79
|
+
value = part.to_s
|
80
|
+
when 'Fixnum'
|
81
|
+
value = part.to_s
|
82
|
+
when 'Symbol'
|
83
|
+
value = object.send(part).to_s
|
84
|
+
when 'Proc'
|
85
|
+
value = part.call(object).to_s
|
86
|
+
when 'NilClass'
|
87
|
+
# Do not complain about nil amounts
|
88
|
+
else
|
89
|
+
raise ArgumentError, "type mismatch for voucher part: expecting 'Integer', 'Fixnum', 'Symbol' or 'Proc' but got '#{ amount.class.to_s }' instead."
|
90
|
+
end
|
91
|
+
value || ''
|
92
|
+
end
|
93
|
+
|
74
94
|
private
|
75
95
|
|
76
96
|
def self.get_transactions keypart, start, stop
|
@@ -103,6 +123,7 @@ module Recognition
|
|
103
123
|
def self.parse_amount amount, object
|
104
124
|
case amount.class.to_s
|
105
125
|
when 'Integer'
|
126
|
+
value = amount
|
106
127
|
when 'Fixnum'
|
107
128
|
value = amount
|
108
129
|
when 'Symbol'
|
data/lib/recognition/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: recognition
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.8
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -181,7 +181,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
181
181
|
version: '0'
|
182
182
|
segments:
|
183
183
|
- 0
|
184
|
-
hash:
|
184
|
+
hash: 1363284435597105623
|
185
185
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
186
186
|
none: false
|
187
187
|
requirements:
|
@@ -190,7 +190,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
190
190
|
version: '0'
|
191
191
|
segments:
|
192
192
|
- 0
|
193
|
-
hash:
|
193
|
+
hash: 1363284435597105623
|
194
194
|
requirements: []
|
195
195
|
rubyforge_project:
|
196
196
|
rubygems_version: 1.8.23
|