3

translations というテーブルがあります。(および対応する ActiveRecord クラス)。このテーブルには、次のフィールド id、キー、および値が含まれています

キーが特定のクエリに一致するすべての翻訳 + クエリに一致しないすべての翻訳を選択したいのですが、クエリに一致する翻訳とキーを共有します。

結果の 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 に答える