# Table name: users
#
# email :string not null
-# id :integer not null, primary key
+# id :bigint(8) not null, primary key
# pass_crypt :string not null
# creation_time :datetime not null
# display_name :string default(""), not null
# image_use_gravatar :boolean default(FALSE), not null
# image_content_type :string
# auth_provider :string
-# home_tile :integer
+# home_tile :bigint(8)
# tou_agreed :datetime
#
# Indexes
has_many :messages, -> { where(:to_user_visible => true).order(:sent_on => :desc).preload(:sender, :recipient) }, :foreign_key => :to_user_id
has_many :new_messages, -> { where(:to_user_visible => true, :message_read => false).order(:sent_on => :desc) }, :class_name => "Message", :foreign_key => :to_user_id
has_many :sent_messages, -> { where(:from_user_visible => true).order(:sent_on => :desc).preload(:sender, :recipient) }, :class_name => "Message", :foreign_key => :from_user_id
- has_many :friends, -> { joins(:befriendee).where(:users => { :status => %w[active confirmed] }) }
- has_many :friend_users, :through => :friends, :source => :befriendee
+ has_many :friendships, -> { joins(:befriendee).where(:users => { :status => %w[active confirmed] }) }
+ has_many :friends, :through => :friendships, :source => :befriendee
has_many :tokens, :class_name => "UserToken"
has_many :preferences, :class_name => "UserPreference"
has_many :changesets, -> { order(:created_at => :desc) }
scope :active, -> { where(:status => %w[active confirmed]) }
scope :identifiable, -> { where(:data_public => true) }
+ has_one_attached :avatar
+
has_attached_file :image,
:default_url => "/assets/:class/:attachment/:style.png",
:styles => { :large => "100x100>", :small => "50x50>" }
end
def is_friends_with?(new_friend)
- friends.where(:friend_user_id => new_friend.id).exists?
+ friendships.where(:befriendee => new_friend).exists?
end
##
##
# delete a user - leave the account but purge most personal data
def delete
+ avatar.purge
+
self.display_name = "user_#{id}"
self.description = ""
self.home_lat = nil
self.auth_provider = nil
self.auth_uid = nil
self.status = "deleted"
+
save
end