我有一张名为翻译的表格。 (还有一个相应的ActiveRecord类)。 该表包含以下字段 id,key和value
我想选择密钥与给定查询匹配的所有翻译+与查询不匹配的所有翻译,但是使用与查询匹配的翻译共享密钥。
生成的SQL看起来像这样:
SELECT * FROM TRANSLATIONS where key in
(select key from Translations where value like '%some search%')
我尝试了一些事情,但我似乎无法弄明白。 关于如何在Arel中表达这一点的任何想法?
答案 0 :(得分:3)
这样的事情应该有效:
t = Table(:translations)
c = t.where(t[:value].matches('%some search%')).project(:key)
t.where(t[:key].in(c))
答案 1 :(得分:3)
与@valodzka类似,但在:键符号
周围添加“t [....]”t = Table(:translations)
c = t.where(t[:value].matches('%some search%')).project(t[:key])
t.where(t[:key].in(c))