2016-08-11 8 views
0

RoR4アプリ。私は電子商取引のウェブサイトの価格設定を示すページXを持っています。したがって、価格設定の内容を示すインデックスページの価格設定コントローラがあります。物事を次の操作を行う必要がある購入ボタンがあります:クリックした場合既存のコントローラに新しいアクションを追加するか、新しいコントローラに新しいアクションを追加しますか?

  1. 、認証され、クレジットカード情報の成功購入で
  2. のためのサードパーティのサービスにそれらを取る場合は、ユーザーが
  3. を認証されているかどうかを確認し、フローを元の電子商取引サイトにリダイレクトする

私のジレンマ: 新しい購入コントローラを追加する必要がありますか?既存の価格設定コントローラに新しいメソッド購入を追加することができます。

+0

私は新しいコントローラ –

答えて

1

あなたのアプリをRESTfulにするかどうかは、すべてそれに依存します。価格設定コントローラに現在インデックスアクションのみが設定されている場合でも、将来はnew/editアクション(価格を追加する)を作成し、対応するcreate/updateアクションを作成することができます。

もちろん、RESTfulにしたくない場合は、必要なメソッドを追加できます。しかし、RESTfulパターンに従うのは良い方法だと思います。このような設計では、セマンティクスが十分に定義され、認識されています。また、コントローラを混乱させることもありません。

ご購入コントローラで行くことにしたのであれば、私は次の操作を行うことができ助言する:

  1. は、あなたの購入ボタンの宛先としてcreateアクションを使用します。
  2. createアクションには、認証を確認するフィルタbefore_actionを追加します。
  3. ここでは、サードパーティとのインタフェースがどの程度正確に行われているのかよく分かりませんが、トランザクション/購入に関する重要な情報をデータベースにすべて記録し、サードパーティの購入を実行することをお勧めしますコール。
  4. 購入の成功または不成功の場合は、第三者に購入コントローラのupdateアクションにリダイレクトするよう依頼することができます。ステップ3の記録を返品情報で更新することができます(回答全体を保存することをお勧めします)また、成功した場合の価格設定ページやエラー処理ページに内部的にリダイレクトされます。

私はそれが唯一の解決策であると言っているわけではありません。しかし、以前の経験から、自分のデータベースに詳細なトランザクションログを保存することは、将来の問題のトラブルシューティングに非常に役立つことを学びました。

したがって、最終的な答えは、別のコントローラーを既存のコントローラーとは正確に一致しないunRESTfulメソッドを追加することよりも優先させることです。

+0

に向かって傾いています、私はこの解決策を進めます:)非常にうまく説明しました。 – user2452057

0

コントローラの名前は支払いや取引に関する懸念をあまり伝えていないと思う価格設定コントローラなので、別のコントローラを持つことは良いと思います。 payments_controller.rbまたはtransactions_controller.rb

として新しいコントローラを持っていることについて、価格設定の名前自体は支払いや取引名は機能のより密接な目的を示し、いくつかの価格に関連するものを示してどのように

関連する問題