0

我必须通过 has_many 关系搜索许多关联模型。为了论证,假设我有一个通过 has_many 关联包含许多类别的 Product 模型。因为我必须对许多父模型的子关联执行此操作,所以我创建了一个缓存表,在其中我将关联中的所有 id 存储为逗号分隔的字符串 - '23,34,56,78' 而不是加入。这也有助于我稍后需要在类别 ID 上使用条件 AND 进行高级搜索。

我的问题是在活动记录中查询此类字符串中是否存在 id 的最佳方法是什么。例如,如果我想要所有具有 id 34、56 和 78 关联的父模型。

为了准确搜索一个 id,我必须搜索 '%,34,%', '34,%', '%,34' 来说明 id 可以占据的字符串中的不同位置。有没有更简单的方法?

4

1 回答 1

0

我不知道这会有多快,但是您可以用逗号分割字符串以创建一个数组,然后.includes?()在所述数组上执行...但这真的比 SQL 快吗?

value.split(',').includes?(other_value)

或多个项目:

value.split(',') && [id1, id2, id3]

这将返回出现在两个数组中的 id 列表。

于 2013-03-15T09:27:04.010 回答