如何在Ruby On Rails中迭代活动记录对象?

Ton*_*ony 5 iteration activerecord ruby-on-rails

这个问题很简单,但我已经遇到过几次这个问题了.

假设你做的事情如下:

cars = Vehicle.find_by_num_wheels(4)

cars.each do |c|
  puts "#{c.inspect}"
end
Run Code Online (Sandbox Code Playgroud)

如果汽车是一个阵列,这可以正常工作,但如果数据库中只有一辆汽车则会失败.显然我可以做一些像"if!cars.length.nil?"的事情.或者在调用.each之前,如果cars对象是一个数组,请检查其他方式,但每次都有点烦人.

是否有类似.each的东西来处理这个检查?或者是否有一种简单的方法可以将查询结果强制为数组而不管大小?

eri*_*rik 12

你可能正在寻找

cars = Vehicle.find_all_by_num_wheels(4)
Run Code Online (Sandbox Code Playgroud)

动态方法只返回一个元素,您必须使用它来返回多个元素.find_by_find_all_by_