mongo_likeable 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +9 -2
- data/lib/mongo_likeable/mongo_likeable.rb +51 -13
- data/lib/mongo_likeable/version.rb +1 -1
- data/spec/mongo/likeable_spec.rb +11 -4
- metadata +3 -3
data/README.rdoc
CHANGED
@@ -23,7 +23,8 @@ After this,
|
|
23
23
|
u = User.new
|
24
24
|
u.like?(some_stuff)
|
25
25
|
|
26
|
-
u.like(some_stuff)
|
26
|
+
u.like(some_stuff) # make sure you do this check before like/dislike
|
27
|
+
# cuz like and dislike the same thing at the same time seems strange
|
27
28
|
u.like(*some_array_of_stuffs) # like an array of stuffs
|
28
29
|
|
29
30
|
u.dislike(some_other_stuff)
|
@@ -34,11 +35,17 @@ After this,
|
|
34
35
|
u.like_counts # display total counts
|
35
36
|
u.dislike_counts
|
36
37
|
|
38
|
+
u.all_likers # display all objects who like/dislike u
|
39
|
+
u.all_dislikers
|
40
|
+
|
41
|
+
u.like_history # display like/dislike histories of u
|
42
|
+
u.dislike_history
|
43
|
+
|
37
44
|
* Any bug or issue, please send me an email: ustc.flyingfox@gmail.com
|
38
45
|
|
39
46
|
== TODO
|
40
47
|
|
41
|
-
* like/dislike history.
|
48
|
+
* like/dislike history.(DONE)
|
42
49
|
|
43
50
|
== Copyright
|
44
51
|
|
@@ -7,27 +7,45 @@ module Mongo
|
|
7
7
|
base.field :likes, :type => Array, :default => []
|
8
8
|
base.field :dislikes, :type => Array, :default => []
|
9
9
|
|
10
|
-
|
11
|
-
|
10
|
+
base.field :likers, :type => Array, :default => []
|
11
|
+
base.field :dislikers, :type => Array, :default => []
|
12
|
+
|
13
|
+
base.field :like_histories, :type => Array, :default => []
|
14
|
+
base.field :dislike_histories, :type => Array, :default => []
|
12
15
|
elsif defined?(MongoMapper)
|
13
16
|
base.key :likes, :type => Array, :default => []
|
14
17
|
base.key :dislikes, :type => Array, :default => []
|
15
18
|
|
16
|
-
|
17
|
-
|
19
|
+
base.key :likers, :type => Array, :default => []
|
20
|
+
base.key :dislikers, :type => Array, :default => []
|
21
|
+
|
22
|
+
base.key :like_histories, :type => Array, :default => []
|
23
|
+
base.key :dislike_histories, :type => Array, :default => []
|
18
24
|
end
|
19
25
|
end
|
20
26
|
|
21
27
|
def like(*models)
|
22
28
|
self.likes |= simplify_instance(*models)
|
23
|
-
|
29
|
+
self.like_histories |= simplify_instance(*models)
|
30
|
+
|
31
|
+
models.each do |model|
|
32
|
+
model.likers |= simplify_instance(self)
|
33
|
+
|
34
|
+
model.save
|
35
|
+
end
|
24
36
|
|
25
37
|
self.save
|
26
38
|
end
|
27
39
|
|
28
40
|
def dislike(*models)
|
29
41
|
self.dislikes |= simplify_instance(*models)
|
30
|
-
|
42
|
+
self.dislike_histories |= simplify_instance(*models)
|
43
|
+
|
44
|
+
models.each do |model|
|
45
|
+
model.likers |= simplify_instance(self)
|
46
|
+
|
47
|
+
model.save
|
48
|
+
end
|
31
49
|
|
32
50
|
self.save
|
33
51
|
end
|
@@ -40,13 +58,21 @@ module Mongo
|
|
40
58
|
self.dislikes.length
|
41
59
|
end
|
42
60
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
61
|
+
def all_likers
|
62
|
+
rebuild_instance(*self.likers)
|
63
|
+
end
|
64
|
+
|
65
|
+
def all_dislikers
|
66
|
+
rebuild_instance(*self.dislikers)
|
67
|
+
end
|
68
|
+
|
69
|
+
def like_history
|
70
|
+
rebuild_instance(*self.like_histories)
|
71
|
+
end
|
72
|
+
|
73
|
+
def dislike_history
|
74
|
+
rebuild_instance(*self.dislike_histories)
|
75
|
+
end
|
50
76
|
|
51
77
|
def like?(model)
|
52
78
|
self.likes.include? simplify_instance(model)[0]
|
@@ -61,6 +87,12 @@ module Mongo
|
|
61
87
|
self.likes = []
|
62
88
|
else
|
63
89
|
self.likes -= simplify_instance(*models)
|
90
|
+
|
91
|
+
models.each do |model|
|
92
|
+
model.likers -= simplify_instance(self)
|
93
|
+
|
94
|
+
model.save
|
95
|
+
end
|
64
96
|
end
|
65
97
|
|
66
98
|
self.save
|
@@ -71,6 +103,12 @@ module Mongo
|
|
71
103
|
self.dislikes = []
|
72
104
|
else
|
73
105
|
self.dislikes -= simplify_instance(*models)
|
106
|
+
|
107
|
+
models.each do |model|
|
108
|
+
model.likers -= simplify_instance(self)
|
109
|
+
|
110
|
+
model.save
|
111
|
+
end
|
74
112
|
end
|
75
113
|
|
76
114
|
self.save
|
data/spec/mongo/likeable_spec.rb
CHANGED
@@ -29,23 +29,30 @@ describe Mongo::Likeable do
|
|
29
29
|
u.dislike?(@s).should be_false
|
30
30
|
|
31
31
|
u.like(@v, @s, @t)
|
32
|
+
@v.all_likers.should == [u]
|
33
|
+
@s.all_likers.should == [u]
|
34
|
+
@t.all_likers.should == [u]
|
32
35
|
u.like_counts.should == 3
|
33
36
|
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
|
-
|
37
|
+
u.like_history.should =~ [@v, @s, @t]
|
38
|
+
|
39
|
+
@v.like(@s)
|
40
|
+
@s.all_likers.should =~ [@v, u]
|
35
41
|
|
36
42
|
u.dislike(@v, @s, @t)
|
37
43
|
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
|
-
|
44
|
+
u.dislike_history.should =~ [@v, @s, @t]
|
39
45
|
|
40
46
|
u.clear_likes(@v, @s)
|
47
|
+
@v.all_likers.should == []
|
41
48
|
u.like_counts.should == 1
|
42
49
|
u.likes.should =~ [@t.class.name + '_' + @t.id.to_s]
|
43
|
-
|
50
|
+
u.like_history.should =~ [@v, @s, @t]
|
44
51
|
|
45
52
|
u.clear_dislikes()
|
46
53
|
u.dislike_counts.should == 0
|
47
54
|
u.dislikes.should == []
|
48
|
-
|
55
|
+
u.dislike_history.should =~ [@v, @s, @t]
|
49
56
|
|
50
57
|
end
|
51
58
|
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
|
+
- 3
|
9
|
+
version: 0.0.3
|
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-12 00:00:00 -05:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|