私のコントローラーの 1 つには 100 近くのメソッド (ルートなど) があり、ほぼすべてのメソッドが同じコードを開始して、id パラメーターが無効な場合はエラー ページにリダイレクトし、その後、id が属していないユーザーの場合は同様のチェックを行います。ユーザーのアカウント:
def something
@foo = Foo.find_by_guid(params[:id])
unless @foo
@msg ||= { :title => 'No such page!',
:desc => "There is no such page!" }
render :action => "error" and return
end
unless @foo.owner_id == current_user.id
@msg ||= { :title => 'Really?',
:desc => "There is no such page." }
render :action => "error" and return
end
コードがレンダリングを行っていることを考えると、そのようなページ ID と所有者 ID の検証を DRY する最良の方法は何ですか?
この時点でやりたくないことは、CanCan のようなブラックボックスのロールとアクセス許可ライブラリにオフロードすることです...私の目標は、これを処理するためのアプリ内コードをできるだけクリーンにすることです。