Add deleted_at for User

Do not remove the user from the database. Mark as deleted instead.
This commit is contained in:
Patrick Gansterer 2016-03-04 19:03:52 +01:00
parent b30b4e46d8
commit b05ac2ab64
15 changed files with 82 additions and 12 deletions

View file

@ -20,7 +20,10 @@ class User < ActiveRecord::Base
has_many :created_orders, :class_name => 'Order', :foreign_key => 'created_by_user_id', :dependent => :nullify
attr_accessor :password, :settings_attributes
scope :deleted, -> { where.not(deleted_at: nil) }
scope :undeleted, -> { where(deleted_at: nil) }
# makes the current_user (logged-in-user) available in models
cattr_accessor :current_user
@ -178,6 +181,18 @@ class User < ActiveRecord::Base
self.groups.where(type: '')
end
def deleted?
deleted_at.present?
end
def mark_as_deleted
update_column :deleted_at, Time.now
end
def restore
update_column :deleted_at, nil
end
def self.authenticate(login, password)
user = find_by_nick(login) || find_by_email(login)
if user && user.has_password(password)