2009-11-09 6 views
0

У меня есть модель кодов и я принципиально иметь форму которым должен аутентифицировать просто каждый код, записанный таким образом мой контроллер:как вы сравниваете параметр с каждым элементом массива в рельсах?

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 

я знаю, что это плохо, в этот момент он проверяет подлинность только последний записанный код.

благодарит заранее.

ответ

0

Как насчет этого?

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

Попробуйте это. Метод Гейба также правилен, если вы действительно хотите использовать @codes для других целей, иначе нет необходимости возвращать все коды.

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

if params[:auth] && !(@codes.call.empty?) 
    #something 
else 
    #nothing 
end 
Смежные вопросы