Ruby on Rails 3.1.3 でアプリを作成しています。さまざまなタイプのユーザー (つまり、管理者、オペレーター、広告主など) がいて、それぞれに異なるメイン (またはホーム) ページがあります。のようなものを使用して、現在ログインしているユーザーのホームページのそれぞれのルートを提供するルート ヘルパーを作成したいと考えていますhome_path
。これは主に、特定のアクションの後にリダイレクトするためのものです (ユーザーのタイプに応じて、それぞれのホームページにリダイレクトしたい)。
current_user
(現在ログインしているユーザーを返す)、current_user.admin?
(現在ログインしているユーザーが管理者の場合は true を返す)など、いくつかのメソッドが既に利用可能ですcurrent_user.operator?
。
現在、これを行うためにヘルパー メソッドを使用していますが、Rails の方法とは思えません。とにかくコードは次のとおりです。
def home_path(params = {})
user = current_user
case user
when user.admin?
params = {:controller => 'administrators', :action => 'index'}.merge(params)
when user.advertiser?
params = {:controller => 'advertisers', :action => 'show', :id => user.advertiser_id}.merge(params)
when user.operator?
params = {:controller => 'callcenter', :action => 'index'}.merge(params)
else
params = {:controller => 'posts', :action => 'home'}.merge(params)
end
url_for(params)
end
.admin?
これは制約のあるルートで行う必要があると思いますが、.operator?
、 などのメソッドに依存する方法はまだわかりません。これに関するヘルプは大歓迎です。