如何在我的用户模型中使用before_filter
验证布尔属性?例如,如果我的用户的布尔属性:lender
等于true,我希望只有贷方才能查看某个页面?
谢谢!
答案 0 :(得分:2)
Devise有一个内置帮助程序:authenticate_user!,可用于确保用户已登录。然后,您可以添加另一个before_filter来检查所需的条件,如果用户重定向/呈现错误页面不允许查看该页面。
class PagesController < ActionController
before_filter :authenticate_user!
before_filter :check_lender, :only => [<pages_to_allow>]
private
def check_lender
render 'errors/access_not_permitted' unless current_user.lender?
end
答案 1 :(得分:1)
在提供相关页面的控制器中,创建一个自定义方法,检查以确保当前用户是贷方,然后在before_action中调用该方法。例如:
class WidgetsController < ActionController
before_action :ensure_lender, only: [:show]
private
def ensure_lender
current_user.lender
end
end
此解决方案假设您在其他位置定义了current_user方法(即ApplicationController),该方法返回当前登录用户的用户对象。