mongo_likeable 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +45 -0
- data/lib/mongo_likeable/mongo_likeable.rb +34 -6
- data/lib/mongo_likeable/version.rb +1 -1
- data/spec/mongo/likeable_spec.rb +7 -0
- metadata +4 -3
data/README.rdoc
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
= mongo_likeable
|
2
|
+
|
3
|
+
Works for both Mongoid and Mongo_Mapper!
|
4
|
+
|
5
|
+
== Installation
|
6
|
+
|
7
|
+
In console:
|
8
|
+
gem install mongo_likeable
|
9
|
+
or in Gemfile:
|
10
|
+
gem 'mongo_likeable'
|
11
|
+
|
12
|
+
== Usage
|
13
|
+
|
14
|
+
To make model likeable you need to include Mongo::Likeable into your document:
|
15
|
+
|
16
|
+
class User
|
17
|
+
include Mongoid::Document #for Mongo_Mapper users, this line of code should be include MongoMapper::Document
|
18
|
+
include Mongo::Likeable
|
19
|
+
end
|
20
|
+
|
21
|
+
After this,
|
22
|
+
|
23
|
+
u = User.new
|
24
|
+
u.like?(some_stuff)
|
25
|
+
|
26
|
+
u.like(some_stuff)
|
27
|
+
u.like(*some_array_of_stuffs) # like an array of stuffs
|
28
|
+
|
29
|
+
u.dislike(some_other_stuff)
|
30
|
+
|
31
|
+
u.clear_likes() # if no parameter is given, all likes will be cleared.
|
32
|
+
u.clear_likes(s, s1, s2...)
|
33
|
+
|
34
|
+
u.like_counts # display total counts
|
35
|
+
u.dislike_counts
|
36
|
+
|
37
|
+
* Any bug or issue, please send me an email: ustc.flyingfox@gmail.com
|
38
|
+
|
39
|
+
== TODO
|
40
|
+
|
41
|
+
* like/dislike history.
|
42
|
+
|
43
|
+
== Copyright
|
44
|
+
|
45
|
+
Copyright (c) Jie Fan. See LICENSE.txt for further details.
|
@@ -6,30 +6,54 @@ module Mongo
|
|
6
6
|
if defined?(Mongoid)
|
7
7
|
base.field :likes, :type => Array, :default => []
|
8
8
|
base.field :dislikes, :type => Array, :default => []
|
9
|
+
|
10
|
+
# base.field :like_history, :type => Array, :default => []
|
11
|
+
# base.field :dislike_history, :type => Array, :default => []
|
9
12
|
elsif defined?(MongoMapper)
|
10
13
|
base.key :likes, :type => Array, :default => []
|
11
14
|
base.key :dislikes, :type => Array, :default => []
|
12
|
-
end
|
13
|
-
end
|
14
15
|
|
15
|
-
|
16
|
-
|
16
|
+
# base.key :like_history, :type => Array, :default => []
|
17
|
+
# base.key :dislike_history, :type => Array, :default => []
|
18
|
+
end
|
17
19
|
end
|
18
20
|
|
19
21
|
def like(*models)
|
20
22
|
self.likes |= simplify_instance(*models)
|
23
|
+
# self.like_history |= simplify_instance(*models)
|
24
|
+
|
25
|
+
self.save
|
21
26
|
end
|
22
27
|
|
23
28
|
def dislike(*models)
|
24
29
|
self.dislikes |= simplify_instance(*models)
|
30
|
+
# self.dislike_history |= simplify_instance(*models)
|
31
|
+
|
32
|
+
self.save
|
25
33
|
end
|
26
34
|
|
35
|
+
def like_counts
|
36
|
+
self.likes.length
|
37
|
+
end
|
38
|
+
|
39
|
+
def dislike_counts
|
40
|
+
self.dislikes.length
|
41
|
+
end
|
42
|
+
|
43
|
+
# def like_history
|
44
|
+
# rebuild_instance(*self.like_history)
|
45
|
+
# end
|
46
|
+
#
|
47
|
+
# def dislike_history
|
48
|
+
# rebuild_instance(*self.dislike_history)
|
49
|
+
# end
|
50
|
+
|
27
51
|
def like?(model)
|
28
|
-
self.likes.include? simplify_instance(model)
|
52
|
+
self.likes.include? simplify_instance(model)[0]
|
29
53
|
end
|
30
54
|
|
31
55
|
def dislike?(model)
|
32
|
-
self.dislikes.include? simplify_instance(model)
|
56
|
+
self.dislikes.include? simplify_instance(model)[0]
|
33
57
|
end
|
34
58
|
|
35
59
|
def clear_likes(*models)
|
@@ -38,6 +62,8 @@ module Mongo
|
|
38
62
|
else
|
39
63
|
self.likes -= simplify_instance(*models)
|
40
64
|
end
|
65
|
+
|
66
|
+
self.save
|
41
67
|
end
|
42
68
|
|
43
69
|
def clear_dislikes(*models)
|
@@ -46,6 +72,8 @@ module Mongo
|
|
46
72
|
else
|
47
73
|
self.dislikes -= simplify_instance(*models)
|
48
74
|
end
|
75
|
+
|
76
|
+
self.save
|
49
77
|
end
|
50
78
|
|
51
79
|
private
|
data/spec/mongo/likeable_spec.rb
CHANGED
@@ -29,16 +29,23 @@ describe Mongo::Likeable do
|
|
29
29
|
u.dislike?(@s).should be_false
|
30
30
|
|
31
31
|
u.like(@v, @s, @t)
|
32
|
+
u.like_counts.should == 3
|
32
33
|
u.likes.should =~ [@v.class.name + '_' + @v.id.to_s, @s.class.name + '_' + @s.id.to_s, @t.class.name + '_' + @t.id.to_s]
|
34
|
+
# u.like_history.should =~ [@v.class.name + '_' + @v.id.to_s, @s.class.name + '_' + @s.id.to_s, @t.class.name + '_' + @t.id.to_s]
|
33
35
|
|
34
36
|
u.dislike(@v, @s, @t)
|
35
37
|
u.dislikes.should =~ [@v.class.name + '_' + @v.id.to_s, @s.class.name + '_' + @s.id.to_s, @t.class.name + '_' + @t.id.to_s]
|
38
|
+
# u.dislike_history.should =~ [@v.class.name + '_' + @v.id.to_s, @s.class.name + '_' + @s.id.to_s, @t.class.name + '_' + @t.id.to_s]
|
36
39
|
|
37
40
|
u.clear_likes(@v, @s)
|
41
|
+
u.like_counts.should == 1
|
38
42
|
u.likes.should =~ [@t.class.name + '_' + @t.id.to_s]
|
43
|
+
# u.like_history.should =~ [@v.class.name + '_' + @v.id.to_s, @s.class.name + '_' + @s.id.to_s, @t.class.name + '_' + @t.id.to_s]
|
39
44
|
|
40
45
|
u.clear_dislikes()
|
46
|
+
u.dislike_counts.should == 0
|
41
47
|
u.dislikes.should == []
|
48
|
+
# u.dislike_history.should =~ [@v.class.name + '_' + @v.id.to_s, @s.class.name + '_' + @s.id.to_s, @t.class.name + '_' + @t.id.to_s]
|
42
49
|
|
43
50
|
end
|
44
51
|
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
8
|
+
- 2
|
9
|
+
version: 0.0.2
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Jie Fan
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2012-02-
|
17
|
+
date: 2012-02-07 00:00:00 -05:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -104,6 +104,7 @@ extra_rdoc_files: []
|
|
104
104
|
files:
|
105
105
|
- .gitignore
|
106
106
|
- Gemfile
|
107
|
+
- README.rdoc
|
107
108
|
- Rakefile
|
108
109
|
- lib/mongo_likeable.rb
|
109
110
|
- lib/mongo_likeable/mongo_likeable.rb
|