3

いくつかの条件を含む配列があります。たとえば、次のようになります ages = [1, 4, 10]

配列内の年齢を返すクエリを作成しようとしています。配列は任意の長さにすることができます。だから次のようなもの:

Person.where("age == :ages", {:ages => ages})

:ages上記のequalityステートメントによると、文字列が必要な場合、これは明らかに配列のようには機能しません。

私はそれが次の線に沿って何かを達成するようにしようとしています:配列WHERE age = 1 AND age = 4 AND age = 10によると。ages

オンラインのすべての例では、複数のwhere条件が別々の変数である場合にそれらを使用する方法について説明しています。この場合、次のように簡単ですPerson.where("condition1 = :first AND condition2 = :second....)。配列に不明な数のアイテムがあり、すべてのクエリ結果をそれらでフィルタリングしたいと思います。

4

2 に答える 2

2

と、および単一列の整数値の両方にすることはできないINため、クエリを探していると思います。age 1410

Person.where(age: ages)
于 2013-01-29T21:34:40.860 に答える
2

ActiveRecordとwhereステートメントですでにサポートされています。

ages = [1, 5, 12]
Person.where(age: ages)
# This will generates a query like:
# SELECT * FROM persons WHERE age IN(1, 5 ,12)

このクエリ方法は、「ハードコーディング」条件(文字列をwhereステートメントに渡す)よりも優れています。ハッシュパラメータを使用することで、ActiveRecordにすべてのDB-Query変換作業を処理させることができます。

于 2013-01-29T21:35:01.503 に答える