从ActiveRecord上的模型中检索所有有错误的对象

Mar*_*tin 4 ruby-on-rails ruby-on-rails-3

有一个简单的原因,我不记得从rails控制台检索数据库中保存的所有无效对象.

知道怎么样?

Pat*_*ann 12

说你的模型叫做Widget,然后:

Widget.all.select(&:invalid?)
Run Code Online (Sandbox Code Playgroud)

如果您有大量数据,那可能会非常慢,但如果要检查其有效性,则必须从数据库中检索记录.

  • `#all`实际上非常低效.执行`Widget.find_each(&:invalid?)`将产生与您的解决方案相同的结果,而是将批量记录从数据库中提取出来而不是一次性提取.你的解决方案没有错,只是一个性能击球手. (3认同)
  • 这种解决方案根本没有效率.你最好使用`#find_each`代替,它会批量从数据库中提取记录.它将使用更少的资源. (2认同)