38 lines
1.1 KiB
Ruby
38 lines
1.1 KiB
Ruby
class RolesUser < ApplicationRecord
|
|
belongs_to :user
|
|
belongs_to :role
|
|
|
|
delegate :enqueue_to_index, to: :user
|
|
|
|
after_create :log_role_addition
|
|
after_create :enqueue_to_index
|
|
after_destroy :log_role_removal
|
|
after_destroy :destroy_last_wrangling_activity
|
|
after_destroy :enqueue_to_index
|
|
|
|
def log_role_addition
|
|
admin = User.current_user
|
|
note = "Change made by #{admin&.login}"
|
|
user.create_log_item({ admin_id: admin&.id,
|
|
action: ArchiveConfig.ACTION_ADD_ROLE,
|
|
note: note,
|
|
role_id: role_id })
|
|
end
|
|
|
|
def log_role_removal
|
|
admin = User.current_user
|
|
note = "Change made by #{admin&.login}"
|
|
user.create_log_item({ admin_id: admin&.id,
|
|
action: ArchiveConfig.ACTION_REMOVE_ROLE,
|
|
note: note,
|
|
role_id: role_id })
|
|
end
|
|
|
|
# After removing the tag_wrangler role, remove the
|
|
# user's last wrangling activity as well.
|
|
def destroy_last_wrangling_activity
|
|
return unless role.name == "tag_wrangler"
|
|
|
|
user.last_wrangling_activity&.destroy
|
|
end
|
|
end
|