recognition 0.3.3 → 0.3.4
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 +25 -1
- data/lib/recognition/activerecord/voucher.rb +16 -9
- data/lib/recognition/version.rb +1 -1
- metadata +4 -4
data/README.md
CHANGED
@@ -16,8 +16,12 @@ Then, you need to run the generator:
|
|
16
16
|
|
17
17
|
$ rails generate recogintion:install
|
18
18
|
|
19
|
+
And finally, configure your REDIS server connection parameters in: `config/recognition.yml`
|
20
|
+
|
19
21
|
## Usage
|
20
22
|
|
23
|
+
### Points
|
24
|
+
|
21
25
|
Assuming you have two models User and Post and you want to give users points for the following:
|
22
26
|
|
23
27
|
5 points for registration
|
@@ -54,8 +58,28 @@ app/controllers/profiles_controller.rb:
|
|
54
58
|
end
|
55
59
|
end
|
56
60
|
|
61
|
+
### Vouchers
|
62
|
+
|
63
|
+
Use an existing model or generate a new one. Your model might have the following attributes:
|
64
|
+
|
65
|
+
* `:code` **required**
|
66
|
+
* `:amount` **required**
|
67
|
+
* `:expires_at` _optional_
|
68
|
+
* `:reusable` _optional_
|
69
|
+
|
70
|
+
app/models/voucher.rb:
|
71
|
+
|
72
|
+
class Voucher < ActiveRecord::Base
|
73
|
+
attr_accessible :code, :amount, :expires_at, :reusable
|
74
|
+
acts_as_voucher code_length: 14
|
75
|
+
end
|
76
|
+
|
77
|
+
Then, you may do:
|
78
|
+
|
79
|
+
voucher = Voucher.create!(amount: 20, expires_at: (DateTime.now + 1.day), reusable: true)
|
80
|
+
voucher.redeem current_user
|
57
81
|
|
58
|
-
|
82
|
+
**Note:**
|
59
83
|
Due to the way Ruby method aliasing work, if you need to recognize users for
|
60
84
|
non-ActiveRecord actions (anything that's not :create, :update and :destroy),
|
61
85
|
make sure you add the `recognize` line *after* the method you want to
|
@@ -26,20 +26,27 @@ module Recognition
|
|
26
26
|
def redeemable? recognizable
|
27
27
|
# default: not redeemable
|
28
28
|
pass = false
|
29
|
-
#
|
30
|
-
|
31
|
-
# has the voucher ever been redeemed
|
32
|
-
if Database.
|
33
|
-
|
34
|
-
|
35
|
-
|
29
|
+
# only check if the voucher did not expire
|
30
|
+
unless expired?
|
31
|
+
# has the voucher ever been redeemed?
|
32
|
+
if Database.get_voucher_transactions(self.code).any?
|
33
|
+
# has the voucher ever been redeemed by this user?
|
34
|
+
if Database.get_user_voucher(recognizable.id, code) != 0
|
35
|
+
pass = false
|
36
|
+
# is the voucher reusable?
|
37
|
+
elsif defined?(self.reusable?) && self.reusable?
|
38
|
+
pass = true
|
39
|
+
end
|
40
|
+
else
|
36
41
|
pass = true
|
37
42
|
end
|
38
|
-
else
|
39
|
-
pass = true
|
40
43
|
end
|
41
44
|
pass
|
42
45
|
end
|
46
|
+
|
47
|
+
def expired?
|
48
|
+
defined?(self.expires_at) && self.expires_at.present? && self.expires_at < DateTime.now
|
49
|
+
end
|
43
50
|
end
|
44
51
|
end
|
45
52
|
end
|
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.4
|
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: 2013-05-
|
12
|
+
date: 2013-05-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -180,7 +180,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
180
180
|
version: '0'
|
181
181
|
segments:
|
182
182
|
- 0
|
183
|
-
hash:
|
183
|
+
hash: 582050913544218696
|
184
184
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
185
185
|
none: false
|
186
186
|
requirements:
|
@@ -189,7 +189,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
189
189
|
version: '0'
|
190
190
|
segments:
|
191
191
|
- 0
|
192
|
-
hash:
|
192
|
+
hash: 582050913544218696
|
193
193
|
requirements: []
|
194
194
|
rubyforge_project:
|
195
195
|
rubygems_version: 1.8.23
|