Rails reset_counters в counter_cache с условиями - PullRequest
0 голосов
/ 08 октября 2019

У меня есть два counter_cache, один для общего числа campaign_codes и один только при использовании campaign_code - campaign_codes.where(state: 'used'). Чтобы обновить общее число campaign_codes в rails c, я использовал такой скрипт, как:

CreditCampaign.reset_counters(CreditCampaign.first.id, :campaign_codes)

, но это работает только для общего числа кодов кампании. Как настроить скрипт в консоли для используемой кампании?

CampaignCode модель

class CampaignCode < ApplicationRecord
  belongs_to :credit_campaign, counter_cache: :total_campaign_codes_amount
  belongs_to :used_credit_campaign, -> { where(state: 'used') }, class_name: 'CampaignCode', counter_cache: :used_campaign_codes_amount, optional: true
end

CreditCampaign модель

class CreditCampaign < ApplicationRecord
  has_many :campaign_codes
end
...