Un utilisateur ne peut modifier que son propre message, j'utilise donc les éléments suivants pour vérifier si un utilisateur peut entrer dans le formulaire de modification:
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
Mais ça ne marche pas, des idées de ce que je fais mal?
Si vous souhaitez utiliser l'instruction de sauvetage, vous devez utiliser find()
d'une manière qui déclenche des exceptions, c'est-à-dire en transmettant l'ID que vous souhaitez rechercher.
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
Il s'avère que vous utilisiez le sauvetage et trouvez (: d'abord) incorrectement.
find: renvoie d'abord nil si aucun enregistrement ne correspond aux conditions. Il ne soulève pas ActiveRecord :: RecordNotFound
essayer
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