使用activerecord,当我知道某些ID可能丢失时,如何使用id数组执行.find?

时间:2016-01-04 18:27:54

标签: activerecord

我有一系列ID。有些可能在我的桌子上,有些可能不在。我想返回表中的那些,然后为缺少的行创建行。如果我做一个Model.find(数组),如果缺少任何一个,我会得到一个ActiveRecord :: RecordNotFound异常。我正在使用的解决方法是做一个.exists?对于每个id,但这会导致许多db调用,从而减慢了速度。

是否可以执行Model.find(数组)而无需使用.exists测试每个?

2 个答案:

答案 0 :(得分:1)

看起来find_by_id已被弃用,但它让我看向了正确的方向。 Model.where(id:array)似乎可以解决问题。

答案 1 :(得分:0)

如果您使用find_by_id ActiveRecord不会抛出错误,SQL只会收集现有的ID。

Model.find_by_id(array)