У меня есть две простые модели - Campaign
и CampaignCode
, из которых мне придется вытащить количество уже использованных CampaignCode
. Поскольку это большой объем данных (200 тыс. Кодов только для одной кампании), мне интересно, какой способ будет наиболее эффективным для этого?
query
CampaignCode.where(state: 'used').count
Я думаю, что это query
решение проблемы только с небольшим фрагментом данных, я должен использовать include
или, может быть, какую-то таблицу соединений?
campaign
модель
# created_at :datetime not null
# end_date :date
# id :bigint(8) not null, primary key
# name :text not null
# start_date :date
# updated_at :datetime not null
class Campaign < ApplicationRecord
has_many :campaign_codes
validates :name, presence: true
end
campaign_code
модель
#created_at :datetime not null
#campaign_id :bigint(8)
#state :integer
#uid :string not null, primary key
#updated_at :datetime not null
class CampaignCode < ApplicationRecord
self.primary_key = :uid
belongs_to :campaign
validates :uid, uniqueness: true
end