如何在Rails中获取可能包含单个元素的Array的长度?

时间:2017-04-10 09:11:45

标签: ruby-on-rails ruby

我有一个通常会保存一条记录的数组。我需要应用条件检查以确保数组大小不为零。但是,在数组上应用count方法会在我的rails控制台中引发错误。我尝试了以下

nearest = Array.new
nearest = (Some expression to fetch records).first
nearest.size # throws error as undefined method size
nearest.count # throws error as undefined method count
nearest.length # throws error as undefined method length.

如何获取长度或至少设置表达式以检查值是否为nil?

2 个答案:

答案 0 :(得分:2)

  

[...]数组大小不是nil

数组大小永远不能是nil。它是一个整数,可能为零。

您的代码的问题在于,您不是在数组本身上调用size,而是在它的第一个元素上,可能是nil

要使代码按预期工作,您可能想要:

nearest = Array.new
if nearest.size > 0
  nearest = (Some expression to fetch records).first
  # DO STUFF
end

或者,检查first元素是否为nil(数组的第一个元素始终可访问,但对于空数组返回nil

nearest = Array.new
nearest = (Some expression to fetch records).first
unless nearest.nil?
  # DO STUFF
end

答案 1 :(得分:0)

nearest = Array.new
nearest << Test.first

nearest.count

objArray = []
objArray = Array.new

推,推或使用&lt;&lt;:

objArray.push 17
>>> [17]

objArray << 4
>>> [17, 4]