Încerc să-mi dau seama de ce verificarea mea nul nu reușește atunci când apelez o metodă fără param sau un param id care nu produce înregistrări.
@game = Game.where(:id => params[:id]).first
if @game.nil?
redirect_to root_path
end
În consolă funcționează bine.
>> pp @game.nil?
=> true
În aplicație, acest lucru eșuează (nu redirecționează niciodată!), de ce?
EDITARE 1:
În consolă (cu param id nul sau valoare de înregistrare inexistentă): Aceasta funcționează:
unless Game.exists?(params[:id])
raise('ok')
end
Dar nu în aplicația din viața reală :( Am încercat aproape toate modalitățile de a verifica dacă înregistrarea este existentă sau validă, codul trece doar de această verificare și continuă așa cum este
EDITARE 2:
Privind un alt cod, am observat că am folosit o declarație de returnare, se pare că o rezolvă cu asta..
Lucrări:
unless Game.exists?(params[:id])
redirect_to root_path
return
end
Eșuează:
unless Game.exists?(params[:id])
redirect_to root_path
end
Nu sunt sigur de ce are nevoie de o revenire după redirect_to explicit
exists?
. Documentație găsită aici: apidock.com/rails/v3.2.13/ActiveRecord/ FinderMethods/exists%3F - person Paul Richter   schedule 07.10.2013== true
. Aș folosi.exists?
Pariez că tipul de returnare al extragerii nu este un obiect nil sau un obiect ActiveRecord. - person Adam Waite   schedule 07.10.2013