Rails - 按属性在活动记录关联中查找对象,而无需发出更多查询



非常简短的问题,我觉得答案一定已经在StackOverflow上了,但我找不到它。

我有一些传入的参数。它们每个都有一个唯一的 ID。

我查询数据库并使用以下内容获取活动记录关联:

existing_things = current_user.things.where(uuid: [param_uuids])

这为我提供了这些对象的活动记录关联。

但是,我后来做的是这样的:

existing_things.where(uuid: some_specific_uuid)

当然,当我运行上述查询时,它会发出一个 SQL 语句。

我想做的是在预加载的Active Record对象数组中找到一个对象,并在不发出另一个查询的情况下返回该对象。

我应该怎么做?

就像它是一个普通数组一样:Enumerable#find.

existing_things.find { |t| t.uuid == some_specific_uuid }

(如果您期待不止一场比赛,则select(


如果你要做很多这样的查找,你可能希望有一个哈希:

things_by_uuid = existing_things.index_by(&:uuid)
things_by_uuid[some_specific_uuid]

(同样,如果您期望每个值有多个匹配项,则group_by(

最新更新