FIX: Add migration to set correct redemption_count (#12491)
Redeeming email invites did not increase the redemption_count which let those invites in a weird state were they were both pending and redeemed.
This commit is contained in:
parent
066c59d0e3
commit
2a4ddc621d
|
@ -212,7 +212,8 @@ class Invite < ActiveRecord::Base
|
||||||
.joins("LEFT JOIN invited_users ON invites.id = invited_users.invite_id")
|
.joins("LEFT JOIN invited_users ON invites.id = invited_users.invite_id")
|
||||||
.joins("LEFT JOIN users ON invited_users.user_id = users.id")
|
.joins("LEFT JOIN users ON invited_users.user_id = users.id")
|
||||||
.where(invited_by_id: inviter.id)
|
.where(invited_by_id: inviter.id)
|
||||||
.where('redemption_count > max_redemptions_allowed OR expires_at < ?', Time.zone.now)
|
.where('redemption_count < max_redemptions_allowed')
|
||||||
|
.where('expires_at < ?', Time.zone.now)
|
||||||
.order('invites.expires_at ASC')
|
.order('invites.expires_at ASC')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class UpdateInvitesRedemptionCount < ActiveRecord::Migration[6.0]
|
||||||
|
def change
|
||||||
|
execute <<~SQL
|
||||||
|
WITH invite_counts AS (
|
||||||
|
SELECT invite_id, COUNT(*) count
|
||||||
|
FROM invited_users
|
||||||
|
GROUP BY invite_id
|
||||||
|
)
|
||||||
|
UPDATE invites
|
||||||
|
SET redemption_count = GREATEST(redemption_count, count)
|
||||||
|
FROM invite_counts
|
||||||
|
WHERE invites.id = invite_counts.invite_id
|
||||||
|
SQL
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue