ibham 0.1.1.rc1 → 0.1.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 +4 -0
- data/README.md +54 -4
- data/lib/ibham/version.rb +1 -1
- data/lib/models/vote.rb +1 -1
- data/spec/models/vote_spec.rb +1 -0
- metadata +12 -12
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
# Ibham [](http://travis-ci.org/bloc40/ibham)
|
1
|
+
# Ibham [](http://travis-ci.org/bloc40/ibham) [](https://codeclimate.com/github/bloc40/ibham)
|
2
2
|
|
3
|
-
|
3
|
+
Ibham is a gem that allows Rails apps to compute and display voting scores for active records models.
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
@@ -16,9 +16,59 @@ Or install it yourself as:
|
|
16
16
|
|
17
17
|
$ gem install ibham
|
18
18
|
|
19
|
-
|
19
|
+
Generate the migration
|
20
20
|
|
21
|
-
|
21
|
+
$ rails g ibham:install
|
22
|
+
$ rake db:migrate
|
23
|
+
|
24
|
+
# Usage
|
25
|
+
|
26
|
+
Let's say you have a user model (the voter). You need to add the mixin
|
27
|
+
*acts_as_voter* to that model:
|
28
|
+
|
29
|
+
class User < ActiveRecord::Base
|
30
|
+
acts_as_voter
|
31
|
+
end
|
32
|
+
|
33
|
+
And let's say you have an item model that the user can cast vote for
|
34
|
+
(the voteable). you need to add the mixin *acts_as_voteable* to the item
|
35
|
+
model:
|
36
|
+
|
37
|
+
class Item < ActiveRecord::Base
|
38
|
+
acts_as_voteable
|
39
|
+
end
|
40
|
+
|
41
|
+
### Casting votes
|
42
|
+
|
43
|
+
The user can cast votes in the following ways:
|
44
|
+
|
45
|
+
# Let's first create a user and an item:
|
46
|
+
user = User.create
|
47
|
+
item = Item.create
|
48
|
+
|
49
|
+
user.vote_up(item) # Adds a positive vote
|
50
|
+
user.vote_down(item) # Adds a negative vote
|
51
|
+
|
52
|
+
or
|
53
|
+
|
54
|
+
# The only allowed values are 1 and -1
|
55
|
+
user.cast_vote(item, 1) # Adds a positive vote
|
56
|
+
user.cast_vote(item, -1) # Adds a negative vote
|
57
|
+
|
58
|
+
Since a user can cast only one vote per item, to check if the user can
|
59
|
+
cast vote for an item:
|
60
|
+
|
61
|
+
user.can_vote_for?(item)
|
62
|
+
|
63
|
+
### Retrieving votes
|
64
|
+
|
65
|
+
To retrieve the votes:
|
66
|
+
|
67
|
+
item.up_votes # Return the total number of positive votes
|
68
|
+
item.down_votes # Return the total number of negative votes
|
69
|
+
|
70
|
+
item.up_percentage # Return the percentage of positive votes
|
71
|
+
item.down_percentage # Return the percentage of negative votes
|
22
72
|
|
23
73
|
## Contributing
|
24
74
|
|
data/lib/ibham/version.rb
CHANGED
data/lib/models/vote.rb
CHANGED
data/spec/models/vote_spec.rb
CHANGED
@@ -18,6 +18,7 @@ describe Vote do
|
|
18
18
|
it 'should fail if the value is other than 1 or -1' do
|
19
19
|
vote = Vote.new(value: 2)
|
20
20
|
vote.valid?.must_equal false
|
21
|
+
vote.errors.full_messages.must_include 'Value should be either 1 or -1'
|
21
22
|
end
|
22
23
|
|
23
24
|
it 'should validate uniqueness of vote for voter and voteable' do
|
metadata
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ibham
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.1
|
5
|
-
prerelease:
|
4
|
+
version: 0.1.1
|
5
|
+
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Jamal El Milahi
|
@@ -13,7 +13,7 @@ date: 2012-10-05 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activerecord
|
16
|
-
requirement: &
|
16
|
+
requirement: &70361593621620 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70361593621620
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rake
|
27
|
-
requirement: &
|
27
|
+
requirement: &70361593618840 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70361593618840
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: database_cleaner
|
38
|
-
requirement: &
|
38
|
+
requirement: &70361593617980 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70361593617980
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: sqlite3
|
49
|
-
requirement: &
|
49
|
+
requirement: &70361593643540 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70361593643540
|
58
58
|
description: Voting System for Rails applications
|
59
59
|
email:
|
60
60
|
- jamal@elmilahi.com
|
@@ -96,9 +96,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
96
96
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
97
97
|
none: false
|
98
98
|
requirements:
|
99
|
-
- - ! '
|
99
|
+
- - ! '>='
|
100
100
|
- !ruby/object:Gem::Version
|
101
|
-
version:
|
101
|
+
version: '0'
|
102
102
|
requirements: []
|
103
103
|
rubyforge_project:
|
104
104
|
rubygems_version: 1.8.17
|