Rails 4使用rescue_from ActiveRecord :: RecordNotFound,:with => :访客用户的record_not_found

时间:2015-03-21 18:43:12

标签: ruby-on-rails ruby rails-activerecord

我看过很多关于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页面,这不需要用户会话。

对此的任何帮助都将非常感谢!非常感谢!

0 个答案:

没有答案