-1

lettersmysql データベースの列に次のデータがあります。私はそれらを保存しましたvarchar

letters
["a","b"]
["a","b","d"]
["a","d"]
["d","c","e"]
["e","c","f"]
["c","f"]
["f","e"]

いくつかの要素を一致させようとしています。私がparams[:lttrs]asを持っているとき"a"、私は戻りたい:

["a","b"]
["a","b","d"]
["a","d"]

私がparams[:lttrs]asを持っているとき"c,e"、私は戻りたい:

["d","c","e"]
["e","c","f"]

私の試みは、すべての行を取得してから、それぞれを と一致さinclude?('a')せることですが、一度に 1 つの要素しか実行できません。それがアプローチですか?

4

2 に答える 2

0

次のようなことを試すことができます。

query = "letters "
r = 1
letters_arr = params[:lttrs].split(",")
letters_arr.each do |l|
  if r == 1:
    query << " like '%#{l}%'"
  else
    query << " or like '%#{l}%'"
  end
end

letters_found = WhateverModel.where(クエリ)

明らかに、パラメータがそれよりも安全に処理されるようにする必要がありますが、それでうまくいくはずです。

于 2013-05-08T07:18:57.240 に答える