1

ActiveRecordを使用してユーザーに関する情報を維持しています。Userクラスには、予想されるload()、insert()、update()、およびdelete()メソッド、setter、getter、およびその他のいくつかのメソッドがあります。しかし、他の特定のメソッドをUserクラスに含めるか、共同作業者が処理するかを決めるのに苦労しています。

次に例を示します。

ユーザーが確認を必要とする可能性のあるいくつかのトランザクションがあります。これは従来の方法で処理されます。つまり、リンクを含む電子メールをユーザーに送信します。リンクをクリックすると、ユーザーが実際にトランザクションを続行することを望んでいることを確認できます。検証キーのハッシュとその有効期限は、ユーザーレコードの一部として保持されます。

このプロセスのどこに線を引く必要がありますか?検証を処理する共同作業者が必要ですか(たとえば、クエリ文字列からプレーンテキストの検証キーを取得し、ユーザーオブジェクトをパラメーターとして受け入れることによって)?または、これをUserクラスによって内部的に処理する必要がありますか(メソッド呼び出しでプレーンテキストの検証キーを渡す)?

もちろん、検証時に発生する次のことは、トランザクションが進行し、アクティブレコードの更新が必要になることです。そこでは、Userクラスが責任を負わなければならないように思われます。

助言がありますか?

4

1 に答える 1

0

このタスクは、confirmationsテーブルを管理する共同編集者に委任する必要があります。

モデルを使用して、Confirmationすべての確認要件を追跡します。モデルはに属しUser、確認ハッシュと確認対象のアクション(たとえばactivate_accountchange_passwordなどchange_email)を管理します。

コントローラは、確認ハッシュを検証し、適切なモデル(たとえば、 -> 、->など)でConfirmation適切なアクションを連鎖させ、正常に完了するとテーブルからを削除する責任があります。activate_accountuser.activate()change_passworduser.setPassword()Confirmationconfirmations

これにより、ロジックをより適切に分離できるようになるだけでなく、拡張性も向上します。たとえば、特定のユーザーに対して保留中の複数の確認を楽しむことができます(たとえば、パスワードを変更するための確認と、他の何かを変更するための確認など)。

于 2009-03-06T18:53:50.200 に答える