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.

È stato utile?

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
scroll top