0

ビューから渡された基準に基づいてデータベースを呼び出しているため、動的でなければなりません。

2つの配列があるとしましょう:

columns = ['col1', 'col2', 'col3']
vals = ['val1', 'val2', val3']

クエリは簡単に作成でき、次のように連結できます

query = columns[0] + " = (?) AND" + ...

しかし、パラメータはどうですか?

@finalValues = MyTable.find(:all, :conditions => [query, vals[0], vals[1]... ])

しかし、受け取るパラメータの数がわかりません。したがって、クエリの問題はfor loopand 連結で解決されますが、次のようなことができますか?

@finalValues = MyTable.find(:all, :conditions => [query, vals])

また、Rails は、IN (?) 句に配列を渡すのではなく、値を個々の (?) 句ごとに分割することを理解します。

または、完全な生の文字列を作成してそのまま使用する唯一のオプションですか?

4

1 に答える 1

2

query を最初の要素として条件配列を作成し、すべての val 要素をそれに追加できます。

query = columns.map {|col| "#{col} = ?"}.join(" AND ")
@finalValues = MyTable.find(:all, :conditions => [query, *vals])

注意点として、列と値には同じ数の要素が必要です。

于 2013-06-20T20:00:24.270 に答える