catstodon/app/models/status_pin.rb
2024-10-28 07:34:58 +00:00

33 lines
781 B
Ruby

# frozen_string_literal: true
# == Schema Information
#
# Table name: status_pins
#
# id :bigint(8) not null, primary key
# account_id :bigint(8) not null
# status_id :bigint(8) not null
# created_at :datetime not null
# updated_at :datetime not null
#
class StatusPin < ApplicationRecord
belongs_to :account
belongs_to :status
validates_with StatusPinValidator
after_destroy :invalidate_cleanup_info, if: %i(account_matches_status_account? account_local?)
delegate :local?, to: :account, prefix: true
private
def invalidate_cleanup_info
account.statuses_cleanup_policy&.invalidate_last_inspected(status, :unpin)
end
def account_matches_status_account?
status&.account_id == account_id
end
end