amistad 0.7.5 → 0.9.0
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/.gitignore +4 -1
- data/Gemfile.lock +56 -39
- data/README.markdown +29 -126
- data/Rakefile +35 -1
- data/amistad.gemspec +8 -3
- data/lib/amistad.rb +14 -9
- data/lib/amistad/active_record_friend_model.rb +157 -0
- data/lib/amistad/active_record_friendship_model.rb +52 -0
- data/lib/amistad/config.rb +21 -0
- data/lib/amistad/friend_model.rb +10 -4
- data/lib/amistad/friendship_model.rb +2 -2
- data/lib/amistad/friendships.rb +19 -0
- data/lib/amistad/mongo_friend_model.rb +168 -0
- data/lib/amistad/mongo_mapper_friend_model.rb +58 -0
- data/lib/amistad/mongoid_friend_model.rb +58 -0
- data/lib/amistad/version.rb +1 -1
- data/lib/generators/amistad/install/install_generator.rb +0 -1
- data/lib/generators/amistad/install/templates/create_friendships.rb +2 -2
- data/spec/activerecord/activerecord_spec_helper.rb +11 -24
- data/spec/activerecord/friend_custom_model_spec.rb +17 -0
- data/spec/activerecord/friend_spec.rb +16 -0
- data/spec/activerecord/friendship_spec.rb +13 -0
- data/spec/activerecord/friendship_with_custom_friend_model_spec.rb +18 -0
- data/spec/mongo_mapper/friend_custom_model_spec.rb +27 -0
- data/spec/mongo_mapper/friend_spec.rb +17 -0
- data/spec/mongo_mapper/mongo_mapper_spec_helper.rb +9 -0
- data/spec/mongoid/friend_custom_model_spec.rb +27 -0
- data/spec/mongoid/friend_spec.rb +17 -0
- data/spec/mongoid/mongoid_spec_helper.rb +8 -7
- data/spec/spec_helper.rb +33 -4
- data/spec/{activerecord/activerecord_friendship_model_spec.rb → support/activerecord/friendship_examples.rb} +11 -23
- data/spec/support/activerecord/schema.rb +40 -0
- data/spec/support/friend_examples.rb +2 -12
- data/spec/support/parameterized_models.rb +19 -0
- metadata +177 -36
- data/lib/amistad/active_record/friend_model.rb +0 -146
- data/lib/amistad/active_record/friendship_model.rb +0 -50
- data/lib/amistad/mongoid/friend_model.rb +0 -195
- data/lib/generators/amistad/install/templates/friendship.rb +0 -3
- data/spec/activerecord/activerecord_friend_model_spec.rb +0 -13
- data/spec/mongoid/mongoid_friend_model_spec.rb +0 -47
@@ -0,0 +1,19 @@
|
|
1
|
+
shared_examples_for "friend with parameterized models" do
|
2
|
+
context "When users are created after activating amistad" do
|
3
|
+
before(:each) do
|
4
|
+
activate_amistad(friend_model_param)
|
5
|
+
create_users(friend_model_param)
|
6
|
+
end
|
7
|
+
|
8
|
+
it_should_behave_like "a friend model"
|
9
|
+
end
|
10
|
+
|
11
|
+
context "When users are created before activating amistad" do
|
12
|
+
before(:each) do
|
13
|
+
create_users(friend_model_param)
|
14
|
+
activate_amistad(friend_model_param)
|
15
|
+
end
|
16
|
+
|
17
|
+
it_should_behave_like "a friend model"
|
18
|
+
end
|
19
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: amistad
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2012-11-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,15 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: rake
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ! '>='
|
@@ -32,10 +37,15 @@ dependencies:
|
|
32
37
|
version: '0'
|
33
38
|
type: :development
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: rspec
|
38
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
39
49
|
none: false
|
40
50
|
requirements:
|
41
51
|
- - ! '>='
|
@@ -43,10 +53,15 @@ dependencies:
|
|
43
53
|
version: '0'
|
44
54
|
type: :development
|
45
55
|
prerelease: false
|
46
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
47
62
|
- !ruby/object:Gem::Dependency
|
48
63
|
name: activerecord
|
49
|
-
requirement:
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
50
65
|
none: false
|
51
66
|
requirements:
|
52
67
|
- - ! '>='
|
@@ -54,10 +69,63 @@ dependencies:
|
|
54
69
|
version: '0'
|
55
70
|
type: :development
|
56
71
|
prerelease: false
|
57
|
-
version_requirements:
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: mysql2
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: pg
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: database_cleaner
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
58
126
|
- !ruby/object:Gem::Dependency
|
59
127
|
name: sqlite3
|
60
|
-
requirement:
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
61
129
|
none: false
|
62
130
|
requirements:
|
63
131
|
- - ! '>='
|
@@ -65,32 +133,63 @@ dependencies:
|
|
65
133
|
version: '0'
|
66
134
|
type: :development
|
67
135
|
prerelease: false
|
68
|
-
version_requirements:
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ! '>='
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '0'
|
69
142
|
- !ruby/object:Gem::Dependency
|
70
143
|
name: mongoid
|
71
|
-
requirement:
|
144
|
+
requirement: !ruby/object:Gem::Requirement
|
72
145
|
none: false
|
73
146
|
requirements:
|
74
|
-
- -
|
147
|
+
- - ! '>='
|
75
148
|
- !ruby/object:Gem::Version
|
76
|
-
version:
|
149
|
+
version: '0'
|
77
150
|
type: :development
|
78
151
|
prerelease: false
|
79
|
-
version_requirements:
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
154
|
+
requirements:
|
155
|
+
- - ! '>='
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: '0'
|
80
158
|
- !ruby/object:Gem::Dependency
|
81
159
|
name: bson_ext
|
82
|
-
requirement:
|
160
|
+
requirement: !ruby/object:Gem::Requirement
|
83
161
|
none: false
|
84
162
|
requirements:
|
85
|
-
- -
|
163
|
+
- - ! '>='
|
86
164
|
- !ruby/object:Gem::Version
|
87
|
-
version: '
|
165
|
+
version: '0'
|
88
166
|
type: :development
|
89
167
|
prerelease: false
|
90
|
-
version_requirements:
|
168
|
+
version_requirements: !ruby/object:Gem::Requirement
|
169
|
+
none: false
|
170
|
+
requirements:
|
171
|
+
- - ! '>='
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
91
174
|
- !ruby/object:Gem::Dependency
|
92
175
|
name: fuubar
|
93
|
-
requirement:
|
176
|
+
requirement: !ruby/object:Gem::Requirement
|
177
|
+
none: false
|
178
|
+
requirements:
|
179
|
+
- - ! '>='
|
180
|
+
- !ruby/object:Gem::Version
|
181
|
+
version: '0'
|
182
|
+
type: :development
|
183
|
+
prerelease: false
|
184
|
+
version_requirements: !ruby/object:Gem::Requirement
|
185
|
+
none: false
|
186
|
+
requirements:
|
187
|
+
- - ! '>='
|
188
|
+
- !ruby/object:Gem::Version
|
189
|
+
version: '0'
|
190
|
+
- !ruby/object:Gem::Dependency
|
191
|
+
name: awesome_print
|
192
|
+
requirement: !ruby/object:Gem::Requirement
|
94
193
|
none: false
|
95
194
|
requirements:
|
96
195
|
- - ! '>='
|
@@ -98,7 +197,28 @@ dependencies:
|
|
98
197
|
version: '0'
|
99
198
|
type: :development
|
100
199
|
prerelease: false
|
101
|
-
version_requirements:
|
200
|
+
version_requirements: !ruby/object:Gem::Requirement
|
201
|
+
none: false
|
202
|
+
requirements:
|
203
|
+
- - ! '>='
|
204
|
+
- !ruby/object:Gem::Version
|
205
|
+
version: '0'
|
206
|
+
- !ruby/object:Gem::Dependency
|
207
|
+
name: mongo_mapper
|
208
|
+
requirement: !ruby/object:Gem::Requirement
|
209
|
+
none: false
|
210
|
+
requirements:
|
211
|
+
- - ! '>='
|
212
|
+
- !ruby/object:Gem::Version
|
213
|
+
version: '0'
|
214
|
+
type: :development
|
215
|
+
prerelease: false
|
216
|
+
version_requirements: !ruby/object:Gem::Requirement
|
217
|
+
none: false
|
218
|
+
requirements:
|
219
|
+
- - ! '>='
|
220
|
+
- !ruby/object:Gem::Version
|
221
|
+
version: '0'
|
102
222
|
description: Extends your user model with friendships management methods
|
103
223
|
email:
|
104
224
|
- dev@raw1z.fr
|
@@ -115,23 +235,35 @@ files:
|
|
115
235
|
- Rakefile
|
116
236
|
- amistad.gemspec
|
117
237
|
- lib/amistad.rb
|
118
|
-
- lib/amistad/
|
119
|
-
- lib/amistad/
|
238
|
+
- lib/amistad/active_record_friend_model.rb
|
239
|
+
- lib/amistad/active_record_friendship_model.rb
|
240
|
+
- lib/amistad/config.rb
|
120
241
|
- lib/amistad/friend_model.rb
|
121
242
|
- lib/amistad/friendship_model.rb
|
122
|
-
- lib/amistad/
|
243
|
+
- lib/amistad/friendships.rb
|
244
|
+
- lib/amistad/mongo_friend_model.rb
|
245
|
+
- lib/amistad/mongo_mapper_friend_model.rb
|
246
|
+
- lib/amistad/mongoid_friend_model.rb
|
123
247
|
- lib/amistad/version.rb
|
124
248
|
- lib/generators/amistad/install/install_generator.rb
|
125
249
|
- lib/generators/amistad/install/templates/create_friendships.rb
|
126
|
-
- lib/generators/amistad/install/templates/friendship.rb
|
127
|
-
- spec/activerecord/activerecord_friend_model_spec.rb
|
128
|
-
- spec/activerecord/activerecord_friendship_model_spec.rb
|
129
250
|
- spec/activerecord/activerecord_spec_helper.rb
|
130
|
-
- spec/
|
251
|
+
- spec/activerecord/friend_custom_model_spec.rb
|
252
|
+
- spec/activerecord/friend_spec.rb
|
253
|
+
- spec/activerecord/friendship_spec.rb
|
254
|
+
- spec/activerecord/friendship_with_custom_friend_model_spec.rb
|
255
|
+
- spec/mongo_mapper/friend_custom_model_spec.rb
|
256
|
+
- spec/mongo_mapper/friend_spec.rb
|
257
|
+
- spec/mongo_mapper/mongo_mapper_spec_helper.rb
|
258
|
+
- spec/mongoid/friend_custom_model_spec.rb
|
259
|
+
- spec/mongoid/friend_spec.rb
|
131
260
|
- spec/mongoid/mongoid_spec_helper.rb
|
132
261
|
- spec/spec_helper.rb
|
262
|
+
- spec/support/activerecord/friendship_examples.rb
|
263
|
+
- spec/support/activerecord/schema.rb
|
133
264
|
- spec/support/friend_examples.rb
|
134
|
-
|
265
|
+
- spec/support/parameterized_models.rb
|
266
|
+
homepage: https://github.com/raw1z/amistad/wiki
|
135
267
|
licenses: []
|
136
268
|
post_install_message:
|
137
269
|
rdoc_options: []
|
@@ -145,7 +277,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
145
277
|
version: '0'
|
146
278
|
segments:
|
147
279
|
- 0
|
148
|
-
hash:
|
280
|
+
hash: 340186368039761558
|
149
281
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
150
282
|
none: false
|
151
283
|
requirements:
|
@@ -154,18 +286,27 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
154
286
|
version: '0'
|
155
287
|
segments:
|
156
288
|
- 0
|
157
|
-
hash:
|
289
|
+
hash: 340186368039761558
|
158
290
|
requirements: []
|
159
291
|
rubyforge_project: amistad
|
160
|
-
rubygems_version: 1.8.
|
292
|
+
rubygems_version: 1.8.23
|
161
293
|
signing_key:
|
162
294
|
specification_version: 3
|
163
295
|
summary: Adds friendships management into a rails 3.0 application
|
164
296
|
test_files:
|
165
|
-
- spec/activerecord/activerecord_friend_model_spec.rb
|
166
|
-
- spec/activerecord/activerecord_friendship_model_spec.rb
|
167
297
|
- spec/activerecord/activerecord_spec_helper.rb
|
168
|
-
- spec/
|
298
|
+
- spec/activerecord/friend_custom_model_spec.rb
|
299
|
+
- spec/activerecord/friend_spec.rb
|
300
|
+
- spec/activerecord/friendship_spec.rb
|
301
|
+
- spec/activerecord/friendship_with_custom_friend_model_spec.rb
|
302
|
+
- spec/mongo_mapper/friend_custom_model_spec.rb
|
303
|
+
- spec/mongo_mapper/friend_spec.rb
|
304
|
+
- spec/mongo_mapper/mongo_mapper_spec_helper.rb
|
305
|
+
- spec/mongoid/friend_custom_model_spec.rb
|
306
|
+
- spec/mongoid/friend_spec.rb
|
169
307
|
- spec/mongoid/mongoid_spec_helper.rb
|
170
308
|
- spec/spec_helper.rb
|
309
|
+
- spec/support/activerecord/friendship_examples.rb
|
310
|
+
- spec/support/activerecord/schema.rb
|
171
311
|
- spec/support/friend_examples.rb
|
312
|
+
- spec/support/parameterized_models.rb
|
@@ -1,146 +0,0 @@
|
|
1
|
-
module Amistad
|
2
|
-
module ActiveRecord
|
3
|
-
module FriendModel
|
4
|
-
def self.included(receiver)
|
5
|
-
receiver.class_exec do
|
6
|
-
include InstanceMethods
|
7
|
-
|
8
|
-
has_many :friendships
|
9
|
-
|
10
|
-
has_many :pending_invited,
|
11
|
-
:through => :friendships,
|
12
|
-
:source => :friend,
|
13
|
-
:conditions => { :'friendships.pending' => true, :'friendships.blocker_id' => nil }
|
14
|
-
|
15
|
-
has_many :invited,
|
16
|
-
:through => :friendships,
|
17
|
-
:source => :friend,
|
18
|
-
:conditions => { :'friendships.pending' => false, :'friendships.blocker_id' => nil }
|
19
|
-
|
20
|
-
has_many :inverse_friendships, :class_name => "Friendship", :foreign_key => "friend_id"
|
21
|
-
|
22
|
-
has_many :pending_invited_by,
|
23
|
-
:through => :inverse_friendships,
|
24
|
-
:source => :user,
|
25
|
-
:conditions => { :'friendships.pending' => true, :'friendships.blocker_id' => nil }
|
26
|
-
|
27
|
-
has_many :invited_by,
|
28
|
-
:through => :inverse_friendships,
|
29
|
-
:source => :user,
|
30
|
-
:conditions => { :'friendships.pending' => false, :'friendships.blocker_id' => nil }
|
31
|
-
|
32
|
-
has_many :blocked_friendships, :class_name => "Friendship", :foreign_key => "blocker_id"
|
33
|
-
|
34
|
-
has_many :blockades,
|
35
|
-
:through => :blocked_friendships,
|
36
|
-
:source => :friend,
|
37
|
-
:conditions => "friend_id <> blocker_id"
|
38
|
-
|
39
|
-
has_many :blockades_by,
|
40
|
-
:through => :blocked_friendships,
|
41
|
-
:source => :user,
|
42
|
-
:conditions => "user_id <> blocker_id"
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
module InstanceMethods
|
47
|
-
# suggest a user to become a friend. If the operation succeeds, the method returns true, else false
|
48
|
-
def invite(user)
|
49
|
-
return false if user == self || find_any_friendship_with(user)
|
50
|
-
Friendship.new(:user_id => self.id, :friend_id => user.id).save
|
51
|
-
end
|
52
|
-
|
53
|
-
# approve a friendship invitation. If the operation succeeds, the method returns true, else false
|
54
|
-
def approve(user)
|
55
|
-
friendship = find_any_friendship_with(user)
|
56
|
-
return false if friendship.nil? || invited?(user)
|
57
|
-
friendship.update_attribute(:pending, false)
|
58
|
-
end
|
59
|
-
|
60
|
-
# deletes a friendship
|
61
|
-
def remove_friendship(user)
|
62
|
-
friendship = find_any_friendship_with(user)
|
63
|
-
return false if friendship.nil?
|
64
|
-
friendship.destroy && friendship.destroyed?
|
65
|
-
end
|
66
|
-
|
67
|
-
# returns the list of approved friends
|
68
|
-
def friends
|
69
|
-
self.invited(true) + self.invited_by(true)
|
70
|
-
end
|
71
|
-
|
72
|
-
# total # of invited and invited_by without association loading
|
73
|
-
def total_friends
|
74
|
-
self.invited(false).count + self.invited_by(false).count
|
75
|
-
end
|
76
|
-
|
77
|
-
# blocks a friendship
|
78
|
-
def block(user)
|
79
|
-
friendship = find_any_friendship_with(user)
|
80
|
-
return false if friendship.nil? || !friendship.can_block?(self)
|
81
|
-
friendship.update_attribute(:blocker, self)
|
82
|
-
end
|
83
|
-
|
84
|
-
# unblocks a friendship
|
85
|
-
def unblock(user)
|
86
|
-
friendship = find_any_friendship_with(user)
|
87
|
-
return false if friendship.nil? || !friendship.can_unblock?(self)
|
88
|
-
friendship.update_attribute(:blocker, nil)
|
89
|
-
end
|
90
|
-
|
91
|
-
# returns the list of blocked friends
|
92
|
-
def blocked
|
93
|
-
self.blockades(true) + self.blockades_by(true)
|
94
|
-
end
|
95
|
-
|
96
|
-
# total # of blockades and blockedes_by without association loading
|
97
|
-
def total_blocked
|
98
|
-
self.blockades(false).count + self.blockades_by(false).count
|
99
|
-
end
|
100
|
-
|
101
|
-
# checks if a user is blocked
|
102
|
-
def blocked?(user)
|
103
|
-
blocked.include?(user)
|
104
|
-
end
|
105
|
-
|
106
|
-
# checks if a user is a friend
|
107
|
-
def friend_with?(user)
|
108
|
-
friends.include?(user)
|
109
|
-
end
|
110
|
-
|
111
|
-
# checks if a current user is connected to given user
|
112
|
-
def connected_with?(user)
|
113
|
-
find_any_friendship_with(user).present?
|
114
|
-
end
|
115
|
-
|
116
|
-
# checks if a current user received invitation from given user
|
117
|
-
def invited_by?(user)
|
118
|
-
friendship = find_any_friendship_with(user)
|
119
|
-
return false if friendship.nil?
|
120
|
-
friendship.user == user
|
121
|
-
end
|
122
|
-
|
123
|
-
# checks if a current user invited given user
|
124
|
-
def invited?(user)
|
125
|
-
friendship = find_any_friendship_with(user)
|
126
|
-
return false if friendship.nil?
|
127
|
-
friendship.friend == user
|
128
|
-
end
|
129
|
-
|
130
|
-
# return the list of the ones among its friends which are also friend with the given use
|
131
|
-
def common_friends_with(user)
|
132
|
-
self.friends & user.friends
|
133
|
-
end
|
134
|
-
|
135
|
-
# returns friendship with given user or nil
|
136
|
-
def find_any_friendship_with(user)
|
137
|
-
friendship = Friendship.where(:user_id => self.id, :friend_id => user.id).first
|
138
|
-
if friendship.nil?
|
139
|
-
friendship = Friendship.where(:user_id => user.id, :friend_id => self.id).first
|
140
|
-
end
|
141
|
-
friendship
|
142
|
-
end
|
143
|
-
end
|
144
|
-
end
|
145
|
-
end
|
146
|
-
end
|