私はいくつかの概念を実験しています(実際には、1978年のデータベースWHATSITのRoRバージョンを構築して遊んで学習しています)。
これは基本的にhas_many:through構造であり、Subject->Tags<-Valueがあります。クエリテキストフィールドを使用してコマンドを入力することにより、コマンドライン構造の一部を複製しようとしました。基本的に次のようなものですWhat's steve's phone
。
とにかく、そのインターフェースでは、ほとんどの検索でILIKEが使用されます。私は、何らかの形式の配列を使用してOR条件を許可することによってそれを強化することについて考えています。のようなものWhat's steve's [son,daugher]
。ILIKE句を直接作成することで機能しましたが、文字列を置き換えることはできませんでした。
def bracket_to_ilike(arrel,name,bracket)
bracket_array = bracket.match(/\[([^\]]+)\]/)[1].split(',')
like_clause = bracket_array.map {|i| "#{name} ILiKE '#{i}' "}.join(" OR ")
arrel.where(like_clause)
end
bracket_to_ilike(tags,'tags.name','[son,daughter]')
like句を生成しますtags.name ILiKE 'son' OR tags.name ILiKE 'daughter'
そして、それは関係を取得しますが、フォームの使用についてのすべての話で ("tags.name ILiKE ? OR tags.name ? ",v1,v2,vN..)
、私は誰かがそれを行う方法について何かアイデアを持っているかどうか尋ねたいと思います。
その場で変数を作成することは、私が検索したものから実行可能ですが、賛成ではありません。可変数のパラメーターを持つwhere句を追加できるメソッドを作成しようとした人がいるかどうか疑問に思いました。where句をリレーションに送信しようとしましたが、気に入らなかったのです。
スティーブ