设计before_filter authenticate_admin?
我通过添加admin属性为Devise添加了一个admin角色。
你能告诉我这是否是创建需要管理员用户签名的before_filter的正确方法:
在任何控制器:
before_filter :authenticate_admin!
在application_controller中
protected unless current_user.try(:admin?) redirect_to :new_user_session_path end
采用这种方法
before_filter :authenticate_user! before_filter do redirect_to new_user_session_path unless current_user && current_user.admin? end
这也确保了任何客人也被迫登录。 您不需要修改默认方法来强制身份validation只是为了访问实例方法admin?
def admin? self.admin == true end
我的方法是创建一个角色属性并根据一组预期角色检查其字符串值 – 这种方式更灵活,而不是必须创建许多布尔属性。
看看上面的答案(Michael De Silva),我对他使用的代码有一个问题。 他将路径写为符号( :new_user_session_path
),但我需要它作为常规路径助手( new_user_session_path
)。 直到我改变了这一点,我才得到错误,说道路无效。 (我正在运行Rails 5.)
希望这对其他人有帮助!