3

我有一张叫做翻译的表。(以及相应的 ActiveRecord 类)。此表包含以下字段 id、key 和 value

我想选择键与给定查询匹配的所有翻译+所有与查询不匹配的翻译,但与匹配查询的翻译共享键。

生成的 SQL 可能如下所示:

SELECT * FROM TRANSLATIONS where key in
    (select key from Translations where value like '%some search%')

我已经尝试了几件事,但我似乎无法弄清楚。关于如何在 Arel 中表达这一点的任何想法?

4

2 回答 2

3

像这样的东西应该工作:

t = Table(:translations)
c = t.where(t[:value].matches('%some search%')).project(:key)
t.where(t[:key].in(c))
于 2010-08-17T22:35:22.037 回答
3

类似于@valodzka,但在 :key 符号周围添加“t[....]”

t = Table(:translations)
c = t.where(t[:value].matches('%some search%')).project(t[:key])
t.where(t[:key].in(c))
于 2011-03-18T13:53:15.983 回答