0

这是我的路线.rb

Devel::Application.routes.draw do
  authenticated :user do
    root :to => 'home#index', as: :authenticated_user
  end
  root :to => 'welcome#index'
  devise_for :users, :controllers => {:registrations => "registrations"}
  resources :users
end

我的用户表有一列:admin => true/falseroot :to当标志为真时,我如何检查和不同的控制器。

我唯一知道的是我可以在视图中处理它if current_user.admin?

有什么建议或想法吗?

最好的问候否认

4

2 回答 2

1

我有一个类似的设置,我自己和监狱长一起写的......

在你的 application_controller.rb 写类似

def authorize_admin
redirect_to root_url, alert: 'Access Denied' if current_user.admin == false
end

或您为管理员/用户使用的任何名称,只要它是您用户的布尔值。

然后在您的 pages_controller.rb 中,然后根据需要确定范围,如果您想拒绝所有访问,只需执行

before_action :authorize_admin

否则将其嵌套在您喜欢的任何定义下...

def action
authorize_admin
blah blah blah
end
于 2016-04-12T22:19:52.647 回答
0

home#index在您确定他们是管理员之后,您可以简单地将用户重定向到操作内的管理页面。但是,请确保该页面受到访问限制,以防有人手动访问该页面或意外重定向。

我认为根本不适合在路由文件中有条件地更改主页。

另外,我相信routes.rb文件在应用程序启动时只加载一次,所以我不确定任何条件逻辑是否有效。

于 2013-08-13T17:29:24.000 回答