come si fa a paragonare un parametro per ogni elemento in un array in rotaie?
-
19-09-2019 - |
Domanda
Ho un modello codici e ho un fondamentalmente avere una forma wich dovrebbe autenticare semplicemente per ogni codice registrato così il mio controller è:
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
Lo so che è male, in questo momento è autentica solo per l'ultimo codice registrato.
grazie in anticipo.
Soluzione
Che dire di questo?
def cancel_sale
@codes = Code.find(:all)
if params[:auth] && @codes.include?(params[:auth])
#something
else
@mensaje_de_salida = "wrong auth code"
end
end
Altri suggerimenti
Prova questo. Il metodo di Gabe è corretto così se si vuole realmente utilizzare @codes per un altro scopo altrimenti non c'è bisogno di retreive tutti i codici.
@codes = lambda { Code.find(:all, :conditions => ["auth = ?", params[:auth] ] ) }
if params[:auth] && !(@codes.call.empty?)
#something
else
#nothing
end
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow