catstodon/app/models/concerns/account_counters.rb

31 lines
621 B
Ruby

# frozen_string_literal: true
module AccountCounters
extend ActiveSupport::Concern
included do
has_one :account_stat, inverse_of: :account
after_save :save_account_stat
end
delegate :statuses_count,
:statuses_count=,
:following_count,
:following_count=,
:followers_count,
:followers_count=,
:increment_count!,
:decrement_count!,
to: :account_stat
def account_stat
super || build_account_stat
end
private
def save_account_stat
return unless account_stat&.changed?
account_stat.save
end
end