【问题标题】:how do you compare a param to every item in an array in rails?你如何将参数与rails中数组中的每个项目进行比较?
【发布时间】:2010-12-14 13:19:05
【问题描述】:

我有一个代码模型,我基本上有一个表单,它应该对记录的每个代码进行简单的身份验证,所以我的控制器是:

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

我知道这很糟糕,此时它只对最后记录的代码进行身份验证。

【问题讨论】:

    标签: arrays ruby-on-rails parameters


    【解决方案1】:

    试试这个。如果您真的想将@codes 用于其他目的,Gabe 的方法也是正确的,否则无需检索所有代码。

    @codes = lambda { Code.find(:all, :conditions => ["auth = ?", params[:auth] ] ) }
    
    if params[:auth] && !(@codes.call.empty?)
       #something
    else
       #nothing
    end
    

    【讨论】:

      【解决方案2】:

      这个怎么样?

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-27
        • 1970-01-01
        • 2014-09-14
        • 2015-11-02
        • 1970-01-01
        • 1970-01-01
        • 2019-09-16
        相关资源
        最近更新 更多