我认为我的问题标题有点令人困惑。但我要问的是我正在使用移动设备创建自己的身份验证系统。就像设计current_user
来创建一个会话一样,我想知道如何在不同的模型上实现相同的功能。
我有一个名为 Commuter 的模型。它也有一个id。
commuter
的记录看起来像这样。
Commuter.last
<Commuter id: 867, phone_number: "9483942090">
我正在尝试使用我的控制器方法验证手机号码后创建一个会话,如下所示:
def verify
@commuter = Commuter.where(phone_number: params[:phone_number]).first
if (@commuter && @commuter.authenticate_otp(params[:otp],drift:300))
@commuter.auth_active = true
if @commuter.save
#Removed from session after verified it
session[:phone_number] = nil
session[:is_verified] = nil
#signed in commuter after verified it
sign_in(:commuter, @commuter)
flash[:notice] = "Your mobile no is verified."
end
else
flash[:alert] = "You have entered wrong otp.Please check again."
end
puts "#{current_commuter.phone_number}"
redirect_to root_path
end
我只需要puts
进行调试。所以我现在得到current_commuter
作为未定义的局部变量,我猜是显而易见的原因。所以我想知道如何实现这个基于当前通勤的会话?
答案 0 :(得分:0)
您可以将会话中的Commuter ID保存为session[:cid] = 1
,并在您的基本控制器上创建一个方法,如下所示
def current_commuter
@commuter ||= Commuter.find session[:cid]
end
helper_method :current_commuter