我想一个secific路线限制为仅“current_user.account_level ==‘1’,”如何根据用户属性限制rails中的路由?
到目前为止,我有这个,但我想不通的约束部分:
resources :users, :only => [:show, :index], :constraints => {}
我在做什么错?
我想一个secific路线限制为仅“current_user.account_level ==‘1’,”如何根据用户属性限制rails中的路由?
到目前为止,我有这个,但我想不通的约束部分:
resources :users, :only => [:show, :index], :constraints => {}
我在做什么错?
我想,下面的工作。
match '/:id' => 'users#show', :constraints => { :account_level=>'1' }
match '/' => 'users#index', :constraints => { :account_level=>'1' }
resources :users
在约束部分,我们可以给正则表达式。
例如: resources :users, :only => [:show, :index], :constraints => { ::account_level => /\1/ }
根据CURRENT_USER否则给用户控制器内的条件。
if current_user.account_level == "1"
---code---
else
---code---
end
为什么无法通过before_filter解决? – siddick
它看起来像你试图以某种奇怪的方式实现授权。通常它属于控制器。看看CanCan的宝石,以一种干净的方式实现它:https://github.com/ryanb/cancan – cthulhu
嗯......我想我会与CanCan一起滚动,你是礼仪。我之前避免了这种情况,因为我能够以更简单的方式解决问题,但是我已经做了足够多的时间让我认为我应该只是需要它。 – sevens