rails if if for nil = false

时间:2013-07-30 18:10:45

标签: ruby-on-rails null

编写一个rails应用程序我有一个if语句,首先检查3个变量是否为nil,如果任何变量为nil则应该终止。

问题是variable_name.nil?语法仅检查变量是否为nil。我如何检查变量是否为零?本质上,如果变量不是零,我希望它返回'True'。

def my_status (product)
  product_sales = product.line_items.total_product_sale.sum("quantity")

  if (product.volume.nil? && product.volume2.nil? && product.volume.nil?)
    if (product_sales >= product.volume) && (product_sales < product.volume2)
      level1_status = 'Flipped'
    elsif (product_sales >= product.volume2) && (product_sales < product.volume3)
      my_status = "Flipped"
    elsif (product_sales >= product.volume3)
      my_status = "Flipped"
    else   
      my_status = "In Play"
    end
  end
end

2 个答案:

答案 0 :(得分:1)

如果您不必考虑三个变量中任何变量false(与nil相对)的可能性,那么:

[x, y, z].all?

答案 1 :(得分:0)

您可以直接对初始化变量执行if语句,如果它不是nil则返回true(请注意,这也会测试真实性,只有在项不能返回false时才使用它):

if variable1 && variable2 && variable3
  do things 
end

与此伪代码有效:

if variable1 is not null AND variable2 is not null AND variable3 is not null
  do things
end

虽然使用unless语法来执行您正在执行的检查,但在rails中很常见,我建议您使用这种方法:

unless variable1.nil? || variable2.nil? || variable3.nil?
  do things
end