我有一系列ID。有些可能在我的桌子上,有些可能不在。我想返回表中的那些,然后为缺少的行创建行。如果我做一个Model.find(数组),如果缺少任何一个,我会得到一个ActiveRecord :: RecordNotFound异常。我正在使用的解决方法是做一个.exists?对于每个id,但这会导致许多db调用,从而减慢了速度。
是否可以执行Model.find(数组)而无需使用.exists测试每个?
答案 0 :(得分:1)
看起来find_by_id已被弃用,但它让我看向了正确的方向。 Model.where(id:array)似乎可以解决问题。
答案 1 :(得分:0)
如果您使用find_by_id
ActiveRecord不会抛出错误,SQL只会收集现有的ID。
Model.find_by_id(array)