很短的问题,我觉得答案一定已经在 StackOverflow 上,但我找不到。
我有一些传入参数。他们每个人都有一个唯一的ID。
我查询数据库并使用以下内容获取活动记录关联:
existing_things = current_user.things.where(uuid: [param_uuids])
这为我提供了这些对象的 Active Record 关联。
但是,我后来做的是:
existing_things.where(uuid: some_specific_uuid)
当然,当我运行上述查询时,它会发出一条 SQL 语句。
我想做的是在预加载的 Active Record 对象数组中找到一个对象,然后返回该对象而不发出另一个查询。
我该怎么做?
如果它是一个普通数组,你会用同样的方式:Enumerable#find
。
existing_things.find { |t| t.uuid == some_specific_uuid }
(或者,select
如果您期待不止一场比赛)
如果您要进行大量这样的查找,您可能希望涉及 Hash:
things_by_uuid = existing_things.index_by(&:uuid)
things_by_uuid[some_specific_uuid]
(同样,如果您期望每个值有多个匹配项,则有group_by
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句