where
- wynikowy SQL jest generowany zazwyczaj z AND. Na przykład w tym zapytaniu wszędzie w SQL'u jest AND:
VariantDetail.joins(product_detail: {product: [:channel, :type]}, variant: {starpacks: :version}) .all_active .where(code: cover[:id], value: value, pkb_cats_discr: {percent: percent.to_i}, pkb: {channel_id: channel.id, type_id: @type.id}, version: {code: ver.code})
Mi zaś, chodziło o to, aby kolumna
percent
była rozważana dla dwóch wartości: jako 0 (zero) albo NULL.Okazało się, że można to zrobić w dość prosty sposób. Wystarczy użyć w klauzuli
where
, tablicy.Na przykład tak:
{percent: [0, nil]}co skutkuje takim kompletnym zapisem:
VariantDetail.joins(product_detail: {product: [:channel, :type]}, variant: {starpacks: :version}) .all_active .where(code: cover[:id], value: value, pkb_cats_discr: {percent: [0, nil]}, pkb: {channel_id: channel.id, type_id: @type.id}, version: {code: ver.code})
Brak komentarzy:
Prześlij komentarz