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