mongoid_follow 0.2.0 → 0.2.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/README.rdoc +27 -0
- data/lib/mongoid_follow/follower.rb +8 -8
- data/lib/mongoid_follow/version.rb +1 -1
- data/spec/models/group.rb +2 -2
- data/spec/models/user.rb +6 -2
- data/spec/specs/follow_spec.rb +4 -3
- metadata +2 -2
data/README.rdoc
CHANGED
@@ -48,6 +48,33 @@ You can also be a follower of other models
|
|
48
48
|
@gang.follower?(@bonnie)
|
49
49
|
@bonnie.follows?(@gang)
|
50
50
|
|
51
|
+
== Callbacks
|
52
|
+
|
53
|
+
You can attach callbacks to the follower/followee models before or after the follow.
|
54
|
+
|
55
|
+
# Follower model
|
56
|
+
def before_follow(followee)
|
57
|
+
puts 'Notify me'
|
58
|
+
end
|
59
|
+
|
60
|
+
# Other follower callbacks
|
61
|
+
after_follow
|
62
|
+
before_unfollow
|
63
|
+
after_unfollow
|
64
|
+
|
65
|
+
|
66
|
+
# Followee model
|
67
|
+
def before_followed_by(follower)
|
68
|
+
puts 'Something here'
|
69
|
+
end
|
70
|
+
|
71
|
+
# Other followee callbacks
|
72
|
+
after_followed_by
|
73
|
+
before_unfollowed_by
|
74
|
+
after_unfollowed_by
|
75
|
+
|
76
|
+
* Note: careful with using callbacks, we have no transaction so if breaks on your callbacks, what gets saved is saved.
|
77
|
+
|
51
78
|
* Any bug or issue, please send me an email to aeguintu@gmail.com
|
52
79
|
|
53
80
|
== For development
|
@@ -14,15 +14,15 @@ module Mongoid
|
|
14
14
|
def follow(model)
|
15
15
|
if self.id != model.id && !self.follows?(model)
|
16
16
|
|
17
|
-
model.
|
17
|
+
model.before_followed_by(self) if model.respond_to?('before_followed_by')
|
18
18
|
model.followers.create!(:ff_type => self.class.name, :ff_id => self.id)
|
19
19
|
model.inc(:fferc, 1)
|
20
|
-
model.
|
20
|
+
model.after_followed_by(self) if model.respond_to?('after_followed_by')
|
21
21
|
|
22
|
-
self.before_follow if self.respond_to?('before_follow')
|
22
|
+
self.before_follow(model) if self.respond_to?('before_follow')
|
23
23
|
self.followees.create!(:ff_type => model.class.name, :ff_id => model.id)
|
24
24
|
self.inc(:ffeec, 1)
|
25
|
-
self.after_follow if self.respond_to?('after_follow')
|
25
|
+
self.after_follow(model) if self.respond_to?('after_follow')
|
26
26
|
|
27
27
|
else
|
28
28
|
return false
|
@@ -36,15 +36,15 @@ module Mongoid
|
|
36
36
|
def unfollow(model)
|
37
37
|
if self.id != model.id && self.follows?(model)
|
38
38
|
|
39
|
-
model.
|
39
|
+
model.before_unfollowed_by(self) if model.respond_to?('before_unfollowed_by')
|
40
40
|
model.followers.where(:ff_type => self.class.name, :ff_id => self.id).destroy
|
41
41
|
model.inc(:fferc, -1)
|
42
|
-
model.
|
42
|
+
model.after_unfollowed_by(self) if model.respond_to?('after_unfollowed_by')
|
43
43
|
|
44
|
-
self.before_unfollow if self.respond_to?('before_unfollow')
|
44
|
+
self.before_unfollow(model) if self.respond_to?('before_unfollow')
|
45
45
|
self.followees.where(:ff_type => model.class.name, :ff_id => model.id).destroy
|
46
46
|
self.inc(:ffeec, -1)
|
47
|
-
self.after_unfollow if self.respond_to?('after_unfollow')
|
47
|
+
self.after_unfollow(model) if self.respond_to?('after_unfollow')
|
48
48
|
|
49
49
|
else
|
50
50
|
return false
|
data/spec/models/group.rb
CHANGED
data/spec/models/user.rb
CHANGED
@@ -5,11 +5,15 @@ class User
|
|
5
5
|
|
6
6
|
field :name
|
7
7
|
|
8
|
-
def after_follow
|
8
|
+
def after_follow(followee)
|
9
9
|
# after follower follows
|
10
10
|
end
|
11
11
|
|
12
|
-
def
|
12
|
+
def after_followed_by(follower)
|
13
|
+
# after followee is followed
|
14
|
+
end
|
15
|
+
|
16
|
+
def after_unfollowed_by(followee)
|
13
17
|
# after follower unfollows
|
14
18
|
end
|
15
19
|
end
|
data/spec/specs/follow_spec.rb
CHANGED
@@ -126,13 +126,14 @@ describe Mongoid::Follower do
|
|
126
126
|
@bonnie.common_followees_with(@alec).should == [@gang, @clyde]
|
127
127
|
end
|
128
128
|
|
129
|
+
# Duh... this is a useless spec... Hrmn...
|
129
130
|
it "should respond on callbacks" do
|
130
131
|
@bonnie.respond_to?('after_follow').should be_true
|
131
|
-
@bonnie.respond_to?('
|
132
|
+
@bonnie.respond_to?('after_unfollowed_by').should be_true
|
132
133
|
@bonnie.respond_to?('before_follow').should be_false
|
133
134
|
|
134
|
-
@gang.respond_to?('
|
135
|
-
@gang.respond_to?('
|
135
|
+
@gang.respond_to?('before_followed_by').should be_true
|
136
|
+
@gang.respond_to?('after_followed_by').should be_false
|
136
137
|
end
|
137
138
|
end
|
138
139
|
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: mongoid_follow
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.2.
|
5
|
+
version: 0.2.1
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Alec Guintu
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-11-
|
13
|
+
date: 2011-11-17 00:00:00 +08:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|