2017-11-24 10 views
0

属性にNULL以外の値しか含まれていない矛盾モデルのスコープを作成しようとしています。 私はこの属性が完全に空であるレコードを持っています{}または2つの値の1つがnil {123, NULL}であり、私の結果にこれらを持たないことを望みます。ここで値がゼロでないRailsのpostgres整数配列

は私の移行です:

add_column :contradictions, :evaluation_parameters, :integer, array: true, default: [] 

私はすでに空の配列

Contradiction.all.where.not("NULL = ANY (evaluation_parameters)") 

で、私はこれを行うことができますどのように上の任意の提案をレコードのみを返す次のクエリを試してみましたか? ありがとうございました:)すべての

答えて

0

私は Check if NULL exists in Postgres arrayここで答えを見つけることが私の最後のクエリは次のようになります。

Contradiction.where.not(evaluation_parameters: '{}').where.not("-1 = ANY(evaluation_parameters) IS NULL") 
0

まず:

はおそらく:text、ない:integerでなければなりません。

あなたが探しているクエリは次のとおりです。

Contradiction.where("evaluation_parameters = '{}'")

これは空の配列に等しいevaluation_parametersを持つすべての矛盾をフェッチします。

+0

しかし、これを行うことは私だけ空の配列との結果が得られます、ご入力いただきありがとうございます。私が望むのは、配列の両方の値がnullでない矛盾です(例えば、{123,123})。私はこの配列にIDを格納しているので、なぜ ':text'に変換しなければならないのかわかりません。 –

関連する問題