Rails集成Devise报错:Appuser类无before_action方法如何修复?
修复Devise集成中
undefined method 'before_action' for Appuser:Class错误 错误原因
before_action是Rails控制器专属的回调方法,绝对不能放在模型里使用。你误将控制器身份验证的代码写到了Appuser模型中,这直接触发了这个NoMethodError。
修复步骤
- 打开
app/models/appuser.rb文件 - 删除里面的
before_action :authenticate_user!语句 - 重新执行
rails generate devise:views,此时就能正常生成Devise视图文件
补充说明(正确的身份验证用法)
如果要给控制器添加身份验证拦截,应该把回调代码写到对应的控制器里。比如你生成的Home控制器,修改app/controllers/home_controller.rb:
class HomeController < ApplicationController # 注意:这里要和你的Devise模型名对应,你用的是Appuser,所以是authenticate_appuser! before_action :authenticate_appuser! # 你的控制器方法... end
内容的提问来源于stack exchange,提问作者Đỗ Như Vỹ
相关产品推荐
相关产品推荐

