2011-04-23 13 views
0

その他のアカウント管理ページはどのようにRails 3のRESTfulデザインに適合しますか?Rails 3のRESTfulデザインのその他のアカウント管理ページ

たとえば、ユーザーは登録(作成アクション)して、登録成功ページ(?action)に転送されます。ここでトークン(電子メールで送信された)を持つURLを介して電子メールアドレスを確認するよう求められます。

電子メールのリンクをクリックすると、技術的に確認プロセスの一環としてアカウントが「更新」されますか?だから私は何とか "更新"アクションにマップされると思っていますが、更新アクションはPUT要求を期待しています。あれは正しいですか?あなたはどのように電子メールでその仕事をしていますか?

また、パスワードを忘れたり、パスワードをリセットしたりするなど、RESTfulなデザインにうまく収まっているとは思いますか?私の頭をこの周りに包み込むことを試みているだけです。

答えて

1

結果のデザインがあるからといって、Get/Post/Put/Deleteに1:1をマッピングするCRUD動詞だけに制限する必要はありません。つまり、を実際に RESTfulにしたい場合は、独自のリソースでこれらのことを考え始めることができます。たとえば、ユーザ認証のために:

  • ユーザーがサインアップし、確認メールを送信される、あなたはすでに、すべてが離れてRESTfulにそれが見える乗ことを持っているよう
  • 検証のURLは次のようになり :
  • 彼らが従うhttp://app.com/user_verifications/new?token=foobar(GET)あなたのアカウントを確認するためにここをクリックしてください」というフォームをhttp://app.com/user_verificationsに提出してそこに作成アクションをトリガーします。今すぐバックエンドで、必要なアクションを実行したり、ユーザーを更新したり、アクティブに設定したり、実際には "UserVerification"モデルを作成することができます。

完全な例ではありませんが、提供しているRESTfulインターフェイスに追加のリソース(この場合は「user_verifications」)があり、ユーザーがHTTPメソッドを使用してユーザーの目標を達成する。同様のロジックを適用して、「UserSession」タイプのリソース、または特定の「ForgotPassword」リソースのような特定のパスワードでも、パスワードをリセット/忘れ​​てしまいます。

+0

お返事ありがとうございます。それは理にかなっている。私は質問が正しいRESTful-nessを達成するために飛び越えようとしているフープ数になると思う。一番の疑問は、コントローラーで新しいアクションを定義してシンプルに保つことに賛成して、あなた自身が肯定的なアプローチを放棄していることですか? – Dan

+0

あなたはそれのための感覚を開発し始めます。例えば、forgot_passwordはSessionsControllerの別のアクションで、urlは/ session/forgot_passwordです。正確には安らかではありませんが、重大な罪もあります。あなたのアプリを100%すべての場合にRESTulにするには多くの作業が必要ですが、それは多くのリターンを提供するものではありませんので、ここでそこのエッジケースをサポートするために大量のフープジャンプをしません。あなたの最善の判断を使用し、あなたの実際の公開APIをきれいにしてRESTfulに保ち、あなたの他のAPI以外のルートのいくつかがそこに100%存在しない場合、あなた自身をあまり厳しくしないでください。 – ctcherry

+0

もう一度ありがとうございます。それは私がこれにアプローチする方法について考えていたことの線に沿ったものです。私は助けに感謝します! – Dan

0
  1. 成功ページは、ただcreate.html.erbファイルです。通常は作成アクションからリダイレクトしますが、ここでは成功テンプレートをレンダリングできます。RESTのままにしておきたい場合は、さらに1つのステップを追加する必要があります:トークンが存在するフォームがどこにあるのかを確認し、PUT updateアクションにつながります。ユーザーはこのページへのリンクを受け取ります。

    ここでは簡単なGETリクエストを使用することをお勧めします。追加のクリックなしで情報が更新されます。

  2. パスワードやその他の機能の復元と同じ方法で作業します。電子メールを受け取ったフォーム付きのページを追加し、トークンで満たされたフォームのページへのリンク付きの手紙を送信します。

+0

ヘルプfl00rをありがとう。応答を感謝します。 – Dan

関連する問題