2009-04-05 9 views
0

私が構築しているアプリケーションでは、ユーザーという概念があります。計算された値はMVCパターンのどこにありますか?

アプリでは、ユーザーにプロフィールページがあります。

これはかなり単純です。彼らは基本的にちょうど/ profileと同じですか?id = 3か何でも、3は私が見たいと思うユーザーのユーザーIDです。

url_for_profileメソッドをUserモデルに追加することは意味がありますか、またはユーザープロファイルURLの表示を行うか、まったく別の操作を行う必要がありますか?

さまざまなアプローチがありますが、ここでのベストプラクティスとは何かが不思議です。

アドバイスをいただきありがとうございます。

+0

あなたは何を求めているのかは分かりません。 – Dan

答えて

1

どの層がURLを決定しているかによって異なります。

何らかの理由でURLがモデルレイヤーによって定義されている場合(モデルのオブジェクトには、ウェブサイトを時々参照する必要があるクライアントサーバーアプリケーション)、プロファイルオブジェクトを取得するためのメソッドが必要です。

URLが純粋にプレゼンテーションレイヤー(モデルがユーザーデータそのものを提供しているWebサイト)の概念である場合は、コントローラレイヤーによって決定されます。このような場合、UrlFactoryなどを作成してユーザーIDを入力できる場所を作成すると、対応するプロファイルURLが生成されます。

0

url_for_profileこれは、プロファイルをキャッシュしたい場合や、ユーザー数が非常に多くなった場合、アプリケーションをクラスタ化する必要があり、その時間にこのメソッドを使用すると便利なためです。

異なるビューを作成することもできますが、URLを暗黙的に指定すると、プロジェクトやデータベースが拡大するにつれて問題が発生する可能性があります。したがって、新しいビューを作成している場合でも、クラスタリングに使用できるurl_for_profileが必要です。あなたが気付いた場合は、マイクロソフトのすべてのリンクは、この形式を持っている... go.microsoft.com/linkID=XXXXXXX、

0

は、私は、ユーザーがURLが何であるかを知っている必要があると言うあなたの条件には何も見ることができません。このメソッドを実装すると、Order.url_for_orderやCart.url_for_cartのようなものになる可能性があります。 URLの指定方法を変更したい場合は、すべてのクラスを変更する必要があります。システム内のすべてのオブジェクトにIDとビューヘルパークラスを持たせることをお勧めします。 URLHelper.url_for_object(myobject)

モデルのオブジェクトを分離することが絶対必要です彼らがどのように配置されているのかを配管し、あなたが使っているWebフレームワークに位置づけさせます。一般的なベストプラクティスでは、すべてのクラスがIDを指定し、Webインフラストラクチャ内のハンドラはレンダリングするクラスに依存します。クラスに渡されたIDによってクラスを取得します。

したがって、依存関係は1つの方法であることがわかります。 Viewクラスは基になるモデルに依存しますが、モデルはそのモデルの配置方法に依存しません。その後、オブジェクトのキャッシュが必要な場合は、ビューレイヤーでこれを実装できます。また、基になるオブジェクトは、キャッシュされているかどうかについての知識や依存性はありません。

関連する問題