コントローラーのルートを特定せずに、リクエスト URL に含まれるすべての ID をコントローラーで使用するのが好きです。
私のルート:
...
resources :users do
resources :properties
end
...
私のコントローラーは、標準の足場コントローラーです。index メソッドを見てみましょう。
def index
properties = Properties.all
respond_to do |format|
format.json { render json: properties }
end
end
def show
@property = Property.find(params[:id])
respond_to do |format|
format.json { render json: property }
end
end
/users/10/propertiesのようなルートの問題は、10 の user_id を取得せず、それを使用してクエリを作成していないことです。サブセットの代わりにすべてのプロパティを照会します。
また、他のユーザーのプロパティを表示するためにURLを簡単に変更できるようにします。「id」をいじるだけです。「user_id」は無視されるため、一致する「user_id」+「id」を見つける必要はありません。
もちろん、それをコードで明示的に表現することはできますが、それではルート固有になってしまいます。ネストされていないルートのコンテキストでもコントローラーを使用するのが好きです。
それを処理するための標準的なレシピはありますか?"_id" で終わるすべてのパラメータを見てみませんか?