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)
}