Ruby on rails 为什么我会得到未定义的方法“save';for nil:NilClass在rails中使用魔法身份验证时

Ruby on rails 为什么我会得到未定义的方法“save';for nil:NilClass在rails中使用魔法身份验证时,ruby-on-rails,sorcery,Ruby On Rails,Sorcery,我正在尝试修复Rails应用程序中的身份验证问题 当用户(称为成员)注册时,将引发以下错误: nil:NilClass的未定义方法“save” 这是在我的会话中。\u controller.rb def create @member = login(params[:email], params[:password]) if @member.save session[:member_id] = @member.id auto_login(@member) redirect_

我正在尝试修复Rails应用程序中的身份验证问题

当用户(称为成员)注册时,将引发以下错误:

nil:NilClass的未定义方法“save”

这是在我的会话中。\u controller.rb

def create
 @member = login(params[:email], params[:password])
  if @member.save
   session[:member_id] = @member.id
   auto_login(@member)
   redirect_to root_path, notice: "hi #{@member.name}."
  else
   flash.now.alert = "login fail."
   render :new
  end
end
def create
 @member = Member.create(member_params)
 if @member.save
   auto_login(@member)
   redirect_to profile_path(current_member)
 else
   render 'new'
 end
end
这是在我的members\u controller.rb中

def create
 @member = login(params[:email], params[:password])
  if @member.save
   session[:member_id] = @member.id
   auto_login(@member)
   redirect_to root_path, notice: "hi #{@member.name}."
  else
   flash.now.alert = "login fail."
   render :new
  end
end
def create
 @member = Member.create(member_params)
 if @member.save
   auto_login(@member)
   redirect_to profile_path(current_member)
 else
   render 'new'
 end
end

为什么@member为零?

请在您的会员身上尝试以下方法:

def create
 @member = Member.new(member_params)
 if @member.save
   auto_login(@member)
   redirect_to profile_path(current_member)
 else
   render 'new'
 end
end

我假设当用户登录时会发生这种情况,因为我看到那里有问题。找不到这样的用户
登录
不会更改帐户,如果找不到该帐户,则肯定会返回
:原因可能是不存在电子邮件密码错误。这就是为什么不检查
user.save
(为什么连
save
一个未更改的实体都不检查?),而只检查
user
(如果
nil
,则跳到
else
):

所以。。。总而言之:将代码放在那里提供的代码片段附近,直到它工作,并且您能够跟踪它何时中断