使用布尔属性进行Rails身份验证(设计)

时间:2015-08-29 23:43:42

标签: ruby-on-rails authentication devise

如何在我的用户模型中使用before_filter验证布尔属性?例如,如果我的用户的布尔属性:lender等于true,我希望只有贷方才能查看某个页面?

谢谢!

2 个答案:

答案 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),该方法返回当前登录用户的用户对象。