私はこの正確な難問に取り組んでいます。非常に使いやすいアップグレード ダウングレード機能を備えた 3 つの有料プラン (および完全無料プラン) を提供しています。私のアプリはストレージ集約型ではないので、現在アクティブでないデータを保持することは気にしません。
ダッシュボードでは、現在のプラン レベルと、現在プランにあるアイテムの制限をユーザーに表示します。たとえば、次のようになります。
Campaigns: using 8 out of 10
たとえば 5 つのキャンペーンを含むプランにダウングレードすると、次のようになります。
Campaigns: using 10 out of 5
これは明らかに不自由なので、私の解決策は残りを次のように表示することです
Campaigns: using 5 out of 5 (3 campaigns inactive - UPGRADE)
ビジネスの観点からは、プランにアップグレードするまで、最後に作成したキャンペーンを無効にすることが最も理にかなっていると思います。これは、作成された最初の X キャンペーンを除くすべてのキャンペーンをロックすることを意味します。これは、古いアイテムをアップグレードするか、削除を開始する良いインセンティブになります (Matti Virkkunen の回答による)。
現在の計画とその計画のレベルに基づいているかどうかをチェックする isItemActive のメソッドを実行するアプリにロジックがあります。または何でも)。当然、これはアプリ自体に依存しますが、LIFO アプローチ (最後に非アクティブ化する) アプローチが最も理にかなっていると思います。ユーザーはアップグレードするか、少なくとも古いアイテムを削除する必要があります。
あなたの場合、警告または時間制限を追加したい場合を除いて、同じことを実行できる可能性があります。その後、制限を超えたユーザーのデータは完全に削除されます。