2011-09-11 1 views
0

私は、企業が広告キャンペーンを購入するレールでRubyでアプリケーションを開発しています。まず、自分のサイトのアカウントにクレジットを購入し、そのクレジットでキャンペーンを購入します。事は、キャンペーンがビュー/クリックごとに支払われることです。企業は各キャンペーンごとにクレジットの予算を予約し、これらの予約されたクレジットは他のキャンペーンの購入には使用できません。キャンペーンが終了し、すべてのクレジットが使用されているわけではない場合、それらは予約されず、より多くのキャンペーンを購入することができます。使用しない場合、特定の時間に後退する予約金額

私の質問は:

どのように最善の構造、データベース内のモデルとどのように/準備/非準備金のクレジットを移動します。これは今、私に数日間頭痛を与えています。

編集:

私は以下の回答にコメントしたように、このための私のナンバーワンの目標は、定期的にバックグラウンドプロセスに未予約する必要があります任意のクレジットをチェックすることです。

答えて

0

一つの解決策は次のとおりです。

すべてのお金は、同社の口座にすべての時間を保たれています。目標は、どのくらいの資金が予約されているか、どれくらいはそうではないかを動的に計算することです。これは、すべてのキャンペーンに「予約金額」属性と「使用金額」属性がある場合に実行できます。ユーザーがキャンペーンをクリックすると、私は企業のアカウントから資金を引き出し、キャンペーンの「使用済み」アカウントに追加します。

これはうまくいくはずですが、これが良い解決策であるかどうかのコメントは歓迎します。

1

"ベスト"をどのように定量していますか?

私の最初の考えは、クライアントとキャンペーンの関係を持つことです。各クライアントには多数のクレジットがあります。各クライアントキャンペーンは、クライアントからクレジットを「払い戻す」ことができます。キャンペーンが表示/クリックされると(cluck?)、クライアントキャンペーンからクレジットを引き出します。

スイーパー(または何らかのプロセス)が定期的に失効したキャンペーンを確認します。それが見つかると、残りのクレジットはすべてクライアントのメインアカウントに戻されます。私はまだ試していないことを思い付いた

+0

バックグラウンドプロセスへの依存を避けることが私の目標です。さもなければこれは1つの解決策になります。 – Godisemo

+0

あなたのオプションは、「そのキャンペーンは終わった」という処理を手動で行うことです。その場合は、プロセスの開始方法を除いて実装が同じか、キャンペーンのクリックでそれを行い、「そうですキャンペーンは終わった、私はそれを閉じます "。解決策は同じで、トリガーメカニズムは異なります。 –

+0

今、私はあなたが意味することを理解しています。あなたの解決策は私の答えに書いたものと同じです。私は私の答えを書く前にそれを見ませんでした。それが同じであれば、私たちの両者がそれについて考えたとき、それはおそらく良い考えです。 – Godisemo

関連する問題