0

私は Rails に比較的慣れていないので、global_admin や company_admin など、さまざまなアクセス レベルを持つアプリの構築に忙しくしています。これで、company_admin は特定の会社にのみアクセスでき、他の会社にはアクセスできなくなります。

私のルート:

  resources :companies do
    resources :groups do
      resources :users
    end
  end

以下を含むアクセスをチェックするヘルパーを作成しました。

 if params[:company_id].present?
   @company = Company.find(params[:company_id])
   ...

たとえば、^/companies/1/groups ^/companies/1/groups/1/users を呼び出すと、クエリは true を返し、company_id を見つけますが、^/companies/1 または ^/companies/2 を呼び出すと、 false を返します。company_id が存在する (または少なくとも存在するように見える) のに、なぜそれを取得しないのですか?

前もって感謝します!

4

1 に答える 1

1

ネストされたリソースにアクセスしていない場合は、代わりにparams[:company_id]なりparams[:id]ます。

グループでも同じこと。にアクセスすると/companies/1/groups/1params[:id]グループの ID が返されますが、 にアクセスする/companies/1/groups/1/users/1params[:id]、代わりにユーザーの ID が返され、グループの ID は になりますparams[:group_id]

于 2012-05-09T17:55:55.850 に答える