nil的未定义方法`user’:NilClass
在我的模型电子邮件令牌我有
def self.token_valid(token, type) return unless token.present? token = EmailToken.where("token = ? and verification_type = ? and confirmed = 'false' and created_at <= ?", token, type, EmailToken.expires).includes(:user).first user = token.user end
我从我的控制器中调用这个方法
def confirm_password_reset @user = EmailToken.token_valid(params[:pass_reset],"password") render 'reset_password' if @user end
条件是有效的,因为我测试了它而没有尝试将它与用户关联,它的工作原理。 我要做的是获取token_valid
方法来确认令牌并返回令牌及其关联用户。 belongs_to
和has_many
del也已定义。
Current error : undefined method user for nil:NilClass
谢谢。
最好的方法是使模型返回令牌,然后在reset_password视图中检查@user obj
<%= @user.inspect %>
我的猜测是它返回并清空数组。 如果你正在使用sqlite,你可能想在sqlite中阅读这篇关于布尔数据类型的文档 。 因此,您可能希望将已确认的字段更改为0表示false,将1表示为true。
token = EmailToken.where("token = ? and verification_type = ? and confirmed = 0 and created_at <= ?", token, type, EmailToken.expires).includes(:user).first
如果没有,请检查表格中的拼写错误。
这一行:
token = EmailToken.where("token = ? and verification_type = ? and confirmed = 'false' and created_at <= ?", token, type, EmailToken.expires).includes(:user).first
返回零。