ruby on rails - through - rescate de ActiveRecord:: RecordNotFound in Rails
rails sql query (3)
Resulta que estaba usando rescate y encuentra (: primero) incorrectamente.
find: primero devuelve nil si ningún registro coincide con las condiciones. No sube ActiveRecord :: RecordNotFound
tratar
def edit
@post = Load.find(:first, :conditions => { :user_id => session[:user_id], :id => params[:id]})
if @post.nil?
flash[:notice] = "Wrong post it"
redirect_to :action => ''index''
end
end
Un usuario solo puede editar su propia publicación, por lo que utilizo lo siguiente para verificar si un usuario puede ingresar el formulario de edición:
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
Pero no está funcionando, ¿alguna idea de lo que estoy haciendo mal?
Si desea usar la declaración de rescate, necesita usar find()
de una manera que genere excepciones, es decir, pasar el ID que desea buscar.
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
También puede usar el método rescue_from
ActionController
. Para hacerlo para toda la aplicación a la vez!
class ApplicationController < ActionController::Base
rescue_from ActiveRecord::RecordNotFound, :with => :record_not_found
def record_not_found
render ''record_not_found'' # Assuming you have a template named ''record_not_found''
end
end