1

padrino コントローラー内でルート名を判別する方法はありますか? たとえば、前のブロックでは、ルートに基づいて所定のアクションを実行できるようにしたいと考えています。したがって、次のようなものです。

before do
  check_authorization_for(:route_name)
end

「:route_name」は、「更新」、「削除」、「作成」などのようなものです。現在のように、現在のユーザーが各コントローラー メソッドの開始時に要求されたアクションを実行する権限を持っているかどうかを確認するコードしかありません。私たちの承認スキームは DB 内の情報に依存しており、これらのアクセス許可はコントローラー アクションに基づいています。そのため、コントローラー内のルートの名前を特定する方法がある場合 (つまり、「更新」アクションが呼び出されていることを特定できる場合) )、各アクションでチェックを行う代わりに、承認をテストするブロックを 1 つだけ持つことができます。

これを行うには非常に簡単な方法が必要だと確信していますが、それに関するドキュメントが見つからないようです。よろしくお願いします。

4

1 に答える 1

4

試す

before :show, :edit, :destroy do
    Post.find(params[:id])
end

または、ルート オブジェクトに直接アクセスしたい場合:

request.route_obj

いえ

request.route_obj.controller

現在のパスを混在させたい場合はcurrent_page、レールに似たものがあります。

# http://localhost:3000/category/1/products/page/3
current_path('page' => 4) # => http://localhost:3000/category/1/products/page/4
于 2012-06-20T13:35:02.593 に答える