45 lines
1.1 KiB
Ruby
45 lines
1.1 KiB
Ruby
class ServiceUser < ActiveRecord::Base
|
|
|
|
belongs_to :person
|
|
belongs_to :contact
|
|
belongs_to :service
|
|
belongs_to :invitation
|
|
|
|
before_save :attach_local_models
|
|
scope :with_local_people, joins(:person).merge(Person.local)
|
|
scope :with_remote_people, joins(:person).merge(Person.remote)
|
|
|
|
|
|
def already_invited?
|
|
self.invitation_id.present?
|
|
end
|
|
|
|
def on_diaspora?
|
|
self.person_id.present?
|
|
end
|
|
|
|
def self.username_of_service_user_by_uid(uid)
|
|
if su = ServiceUser.find_by_uid(uid)
|
|
su.username
|
|
else
|
|
nil
|
|
end
|
|
end
|
|
|
|
def attach_local_models
|
|
service_for_uid = Services::Facebook.where(:type => service.type.to_s, :uid => self.uid).first
|
|
if !service_for_uid.blank? && (service_for_uid.user.person.profile.searchable)
|
|
self.person = service_for_uid.user.person
|
|
else
|
|
self.person = nil
|
|
end
|
|
|
|
if self.person
|
|
self.contact = self.service.user.contact_for(self.person)
|
|
end
|
|
|
|
self.invitation = Invitation.where(:sender_id => self.service.user_id,
|
|
:service => self.service.provider,
|
|
:identifier => self.uid).first
|
|
end
|
|
end
|