ruby-on-rails - 如何在 Ruby On Rails 中迭代事件记录对象?

标签 ruby-on-rails activerecord iteration

这个问题很简单,但我遇到过几次这个问题。

假设您执行以下操作:

cars = Vehicle.find_by_num_wheels(4)

cars.each do |c|
  puts "#{c.inspect}"
end

如果汽车是一个数组,这可以正常工作,但如果数据库中只有一辆汽车,则会失败。显然我可以做一些类似“if !cars.length.nil?”的事情。或者在调用 .each 之前检查汽车对象是否是一个数组,但每次都这样做有点烦人。

是否有类似于 .each 的东西可以为您处理此检查?或者是否有一种简单的方法可以将查询结果强制转换为数组而不考虑大小?

最佳答案

您可能正在寻找

cars = Vehicle.find_all_by_num_wheels(4)

动态find_by_方法只返回一个元素,你必须使用 find_all_by_返回多个。

关于ruby-on-rails - 如何在 Ruby On Rails 中迭代事件记录对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/976473/

相关文章:

ruby-on-rails - 使用回调和 STI 的 ActiveRecord 问题

ruby-on-rails - Rails 3 忽略 Postgres 唯一约束异常

ruby - 如何使用 HAML 遍历数组?

bash - 按月迭代 bash 中的最小和最大日期

ruby-on-rails - 在 ruby​​ on rails 中自动设置语言环境

php - Ruby on Rails 的 FirePHP 等价物

ruby-on-rails-3 - 将嵌套模型关联属性与包含匹配

javascript - 是否可以使用 for...of 和/或 for...in 循环遍历嵌套数组?

ruby-on-rails - 通过与 Ruby-on-Rails 4.1 的关系在 RSpec 3.1.0 和 has_many 上遇到麻烦

javascript - 单击后退按钮时加载微调器和显示消息