update through rails query left includes has_one has_and_belongs_to_many ruby-on-rails activerecord

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