【问题标题】: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