2009-05-09 4 views
1

私は常に自分のアプリケーションを可能な限りRESTfulにしようとしていますが、最近私のコントローラに複数の追加メソッドが必要な複雑なプロジェクトに取り掛かりました。Rails:複雑なアプリケーションをRESTfulに保つにはどうすればよいですか?

私は通常、別のものを追加することでこれを実現:コレクションをルーティングするが、それは、回避策のように思えるし、シナリオ上で、私は5

を持つコントローラに余分なメソッドを処理するための任意のベストプラクティスはありますか?これらは、モデルを更新する一般的に単純な形式です。

+0

詳細を追加できますか?コントローラ/リソースとは何ですか、追加する余分なメソッドは何ですか?私は通常それを処理するための良い方法があることがわかっているRESTfullyそれはちょうどいくつかの外見を取得しています。 –

答えて

6

私がしている他の解決策は、RESTfulアクション(Searchなど)に収まらないアクションを作成するたびに発生するため、記事コントローラーで検索アクションを実行したり、このアクションを作成する代わりにできることは、代わりに検索コントローラを作成し、その代わりにRESTfulアクションを使用することです。すべてのアクションを使用する必要があるというルールはなく、1つまたは2つしか必要ではないかもしれませんが、APIをRESTfulに保ち、コードを整理します。

これは固くて速いルールではありませんが、私は確かにどこにものを入れるかを決めるときに役立ちます。

+0

これの素晴らしい例(検索を含む場合もあります)として、レールスカストをチェックしてください:http://railscasts.com/episodes/111-advanced-search-form –

1

Railscast about this topicがあり、そうでなければRESTfulコントローラにカスタムアクションが追加されています。

編集:Railscastの方法を回避策として既に説明していることがわかります。 :-)私はそれを扱う他の "純粋な"唯一の方法は、あなたが望むアクションをサポートするのに必要なコントローラを追加することだと信じています。

1

「私は通常、別のものを追加することでこれを実現:コレクションをルーティングするが、それは、回避策のように思えるし、シナリオ上で、私は5を持っている」これは私には完全に罰金聞こえる

を。 RESTは粗悪な操作ではなく、基本的なクラッシュ操作よりも多くのことを行っているという事実から懸念が出てきているようですが、何も問題はありません。

3

「RESTful」という言葉をどこでどのように使用するかについて、Railsコミュニティに混乱が生じると思います。厳密に言えば、RESTfulにできるのは、ウェブAPI(railsninjaはすでに述べたとおり)です。 REST規約(REST APIを使用するアプリケーション)に準拠するアプリケーションのコードは、通常、HTTPプロトコルの4つの動詞に一致する一連のコントローラ(リソースに一致する)とメソッドで構成され、あなたのアプリケーションをきれいに整え続ける方法のヒントにすぎません。

RESTful Railsアプリケーションについて説明したいと思うなら、RESTfulコントローラについては話すことができません。コントローラ自体についてはRESTfulではありません。多くのリソースを表し、完全にRESTfulであるコントローラが1つだけで、複雑なWebアプリケーションを作成することは可能です(多数のメソッドがあります)。

つまり、コントローラにメソッドを追加しても問題ありません。場合によっては、これらの余分なメソッドのいくつかを抽出し、完全に新しいコントローラを作成することは良いことです。いつでもこれを気に入ってください(親指のルール:自立したリソースでそれを識別できるときはいつでも、すなわち、単独で存在する可能性のあるリソース)。場合によっては、別のコントローラにリソースを抽出するのは愚かかもしれません。ステータス属性を持つリソースがあるとします。この状態属性をリソースとして単独で認識し、少なくとも1つのアクション(更新)を実行するのは理にかなっていますが、別のコントローラにそれを抽出することはできません。

関連する問題