我看过很多关于rescue_from ActiveRecord::RecordNotFound, :with => :record_not_found
的帖子,以及配套方法:
def record_not_found
redirect_to action: :show
end
这是我第一次实现这一点,所以我想知道为什么我不断得到This webpage has a redirect loop
或者我的参数不正确(在record_not_found
方法中)。
当访客用户时间达到预设超时限制时,即使访客仍在应用内,用户记录也会调用#destroy
方法。访客用户尚未输入电子邮件/密码,guest
表中的users
列设置为true
。 (我实际上希望访客能够在应用程序内注册电子邮件等,将访客用户对象获取的任何数据/依赖项传输给新创建的永久用户。)
我一直把它们放在我的个人控制器中,我知道这不是干的...我在ApplicationController
尝试了这个并继续得到This webpage has a redirect loop
,但我现在也是把它放在我的个人控制器中,所以我猜这不是问题所在。
以下是我lessons_controller.rb
...
class LessonsController < ApplicationController
before_action :require_user, :only => [:show]
rescue_from ActiveRecord::RecordNotFound, :with => :record_not_found
def show
@lesson = Lesson.find(params[:id])
@assessment = @lesson.provide_assessment_object
if @assessment
@assessment.make_sure_choices_are_instantiated(current_user)
end
end
private
def record_not_found
redirect_to controller: :lessons, action: :show, id: params[:id]
end
end
我非常喜欢将所有record_not_found
方法(希望最终全部在ApplicationController
内完成干扰)到redirect_to
front
页面,这不需要用户会话。
对此的任何帮助都将非常感谢!非常感谢!