繁体   English   中英

带有布尔值的布尔值在true中的不同路线

[英]different routes when boolean is true in rails with devise

这是我的routes.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/false 当标志为true时,如何检查并root :to其他控制器。

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

有什么建议或想法吗?

最好的问候丹妮

我有一个类似的设置,用监护人写了我自己的...

在您的application_controller.rb中编写类似

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

或您为admin / user拥有的任何名称,只要它是用户的布尔值即可。

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

before_action :authorize_admin

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

def action
authorize_admin
blah blah blah
end

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

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

另外,我相信在应用程序启动后,仅会加载一次routes.rb文件,因此我不确定任何条件逻辑都不会有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM