64 lines
1.4 KiB
Ruby
64 lines
1.4 KiB
Ruby
class User < Person
|
|
|
|
devise :database_authenticatable, :registerable,
|
|
:recoverable, :rememberable, :trackable, :validatable
|
|
|
|
|
|
validates_presence_of :profile
|
|
|
|
before_validation :do_bad_things
|
|
|
|
|
|
######## Commenting ########
|
|
def comment(text, options = {})
|
|
raise "must comment on something!" unless options[:on]
|
|
c = Comment.new(:person_id => self.id, :text => text, :post => options[:on])
|
|
if c.save
|
|
if mine?(c.post)
|
|
c.push_to(c.post.people_with_permissions) # should return plucky query
|
|
else
|
|
c.push_to([c.post.person])
|
|
end
|
|
true
|
|
end
|
|
false
|
|
end
|
|
|
|
######### Friend Requesting
|
|
def send_friend_request_to(friend_url)
|
|
p = Request.instantiate(:to => friend_url, :from => self)
|
|
if p.save
|
|
p.push_to_url friend_url
|
|
p
|
|
end
|
|
end
|
|
|
|
def accept_friend_request(friend_request_id)
|
|
request = Request.where(:id => friend_request_id).first
|
|
request.activate_friend
|
|
request.person = self
|
|
request.push_to(self.callback_url)
|
|
request.destroy
|
|
end
|
|
|
|
def receive_friend_request(friend_request)
|
|
if Request.where(:callback_url => friend_request.callback_url).first
|
|
friend_request.activate_friend
|
|
friend_request.destroy
|
|
else
|
|
friend_request.save
|
|
end
|
|
end
|
|
|
|
|
|
def mine?(post)
|
|
self == post.person
|
|
end
|
|
|
|
private
|
|
def do_bad_things
|
|
self.password_confirmation = self.password
|
|
end
|
|
|
|
|
|
end
|