2

UserActivity モデルを使用して、 has_many :through によって関連付けられている User と Activity の 2 つのモデルがあります。ユーザーはアクティビティを「希望」または「完了」できます。これにより、UserActivity レコードが作成され、適切なブール値が設定されます。

ルートとコントローラー アクションを作成するときに、これらのアクションを処理するために何をお勧めしますか? activity/:id/want や activity/:id/done のようなものが最も理にかなっており、アクティビティ リソースの下に 2 つのメンバー ルートがあるでしょうか? それとも、user_activity コントローラで更新/作成アクションを使用し、作成のために /user_activity に投稿し、更新のために /user_activity/:id に置く方が理にかなっていますか?

4

1 に答える 1

1

私は後者のアプローチ、つまり「user_activity」への POST/PUT アクセスを許可する方法を採用します。REST の世界では、これは「ユーザー」リソースと「アクティビティ」リソースの間の関係を形成するだけですが、新しいリソースと見なされます。

頭に浮かぶ考えの 1 つは、「したい」または「完了した」活動タイプを新しいリソース (「ステータス」など) として分離することです。アイデアはそれがなくてもきれいですが、リストを「したい」または「完了」の上に拡張する必要がある場合 (たとえば、「いつか/多分」)、より簡単になる可能性があります。後でではなく、今すぐ新しいリソースとして定義します。

したがって、次のようになります。

  • ユーザー リソース:/userおよび/user/id
  • アクティビティ リソース:/activityおよび/activity/id
  • ステータス リソース:/statusおよび/status/id
  • ユーザー、アクティビティ、およびリソース間の関係を形成するリソース:/user-activityおよび/user-activity/id

URI 設計に応じて、アクセス可能な URI で作業できます。これにより、特定の状態にあるユーザーのすべてのアクティビティを取得できます。たとえば、次のようになります。/user-activity/user/{userId}/status/{statusId}


注: Ruby-on-Rails の詳細についてアドバイスすることはできませんが (私は PHP の世界出身なので)、(REST) の原則は非常に似ていると思います。

于 2010-09-08T15:48:33.087 に答える