PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Query Rails (postgres) con l'array jsonb

Quello che vuoi usare è @> operatore , che verifica se il valore della mano sinistra contiene il valore della mano destra. "Contiene" funziona sia per gli oggetti che per gli array, quindi la seguente query funzionerebbe:

SELECT * FROM products WHERE specs->'spec_options' @> '["spec1", "spec2"]';

Che credo tu possa trasformare in una sintassi compatibile con ActiveRecord in questo modo:

scope :with_spec_options, ->(spec_options) { 
  where("specs->'spec_option' @> ?", spec_options.to_json) 
}