Documentation sur les opérateurs : Sous la section "Défini ?, Et, Ou, et Non".
Utilisation de and
est utile pour enchaîner des opérations connexes jusqu'à ce que l'une d'entre elles renvoie l'information. nil
o false
. Vous pouvez l'utiliser comme vous l'avez montré dans votre question ou vous pouvez également l'utiliser pour court-circuiter la ligne de code.
# Short circuit example
blog = Blog.find_by_id(id) and blog.publish!
Le blog ne reçoit que .publish!
appelé sur lui si le find_by_id
a réussi.
Dans votre exemple :
def access_denied
redirect_to login_path, :notice => "Please log in to continue" and return false
end
Ils l'utilisent simplement pour écrire le code de manière plus compacte sur une seule ligne.
Cependant, elle est également utile pour une action de contrôleur où vous pouvez effectuer un rendu basé sur des conditionnels et où vous ne voulez pas recevoir l'avertissement de Rails "multiple renders" :
def show
if something
render :partial => 'some_partial'
end
render :partial => 'some_other_partial'
end
Rails vous donnera un avertissement si something
renvoie vrai puisque vous avez plusieurs instructions de rendu évaluées dans l'action. Cependant, si vous le changez en
if something
render :partial => 'some_partial' and return
end
cela vous permettrait d'arrêter l'exécution de l'action.