本文介绍了从 Rails 中的 ActiveRecord::RecordNotFound 救援的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

用户只能编辑自己的帖子,因此我使用以下内容来检查用户是否可以输入编辑表单:

A user can only edit its own post, so I use the following to check if a user can enter the edit form:

  def edit
    @post = Load.find(:first, :conditions => { :user_id => session[:user_id], :id => params[:id]})
  rescue ActiveRecord::RecordNotFound
    flash[:notice] = "Wrong post it"
    redirect_to :action => 'index'
  end

但它不起作用,知道我做错了什么吗?

But it is not working, any ideas what I am doing wrong?

推荐答案

如果你想使用rescue语句你需要使用find() 以一种它引发异常的方式,即传递您要查找的 ID.

If you want to use the rescue statement you need to use find() in a way it raises exceptions, that is, passing the id you want to find.

def edit
  @post = Load.scoped_by_user_id(session[:user_id]).find(params[:id])
rescue ActiveRecord::RecordNotFound
  flash[:notice] = "Wrong post it"
  redirect_to :action => 'index'
end

这篇关于从 Rails 中的 ActiveRecord::RecordNotFound 救援的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-06 06:06