1


私はレール上での電子メールアクティベーションの例を調べてきましたが、ほとんどの例にはアクティベーショントークンの列があり、ユーザーテーブルで確認されています。よくわかりませんが、ユーザーがアクティブ化されると、これらの列のほとんどが無駄に見えるため、これは良い考えではないと思います。アクティベーションを行うことを考えていたのは、アクティベーションと呼ばれる別のモデルを用意することでした。これは一方向have_one :userの関連付けであり、サイトでのユーザーの役割を「保留中」などに設定しました。アクティベーションテーブルは、ユーザーごとにアクティベーショントークンを保持します。次に、アクティベーショントークンを使用してリンクが生成され、ユーザーには次のようなものを含む電子メールが送信されます。www.mysite.com/activate?token='some_really_long_hash'。リンクをクリックすると、ユーザーの役割は「メンバー」などに設定されます。これは良い考えのように思われますか?このようにアクティベーションの落とし穴を想像することはできません。提案?コメント?

4

2 に答える 2

2

ステートマシンのデザインパターンをユーザーモデルに実装する段階にあるようですが、それはデザインへの悪いアプローチではありません。ほとんどの人が必要とするものよりも複雑です。

ステートマシンプラグインは、実行しようとしているタイプのアプローチかもしれないと思います。明らかに、これはあなたが探している以上のものかもしれませんが、アプローチは同じです。

これらの投稿もチェックしてください:

幸運を!

于 2013-01-29T18:01:36.633 に答える
1

最も簡単なアプローチは、ランダムトークンを生成し、それをユーザーまたはメンバーレコードの列に保存することです。「本当に長い」必要はありません。20個のランダムな文字で十分です。推測の確率が非常に低いため、発生することはありません。

通常、トークンはユーザーを検証するために1回だけ使用されますが、ユーザーが後で電子メールをクリックした場合でも、プロファイルにリダイレクトされると便利です。

通常、ユーザーは「検証済み」またはそのようなものに切り替えられます。ステータスフラグは別の列に保存されます。これにより、多くの値の1つである可能性のある初期メンバーシップタイプが保持されます。validated_atこれが、フィールドまたはフィールドがよく表示される理由ですbanned_until

于 2013-01-29T17:59:43.283 に答える