2009-11-09 7 views
0

i ont un modèle de codes et i un ont essentiellement une forme Wich doit authentifier simplement à chaque code enregistré si mon contrôleur est:comment comparez-vous un paramètre à chaque élément d'un tableau dans les rails?

def cancel_sale 

    @codes = Code.find(:all) 

    @codes.each do |c| 
    @code = c.name 
    end 

    if params[:auth] && params[:auth] == @code 

    something 

    else 

    @mensaje_de_salida = "wrong auth code" 

    end 

end 

Je sais qu'il est mauvais, à ce moment, il authentifie que le dernier code enregistré.

merci d'avance.

Répondre

0

Que pensez-vous de cela?

def cancel_sale 

    @codes = Code.find(:all) 

    if params[:auth] && @codes.include?(params[:auth]) 
    #something 
    else 
    @mensaje_de_salida = "wrong auth code" 
    end 

end 
0

Essayez ceci. La méthode de Gabe est également correcte si vous voulez vraiment utiliser @codes à d'autres fins, sans avoir besoin de récupérer tous les codes.

@codes = lambda { Code.find(:all, :conditions => ["auth = ?", params[:auth] ]) } 

if params[:auth] && !(@codes.call.empty?) 
    #something 
else 
    #nothing 
end