Det du vill använda är @>
operatör
, som testar om ditt vänstra värde innehåller det högra värdet. "Innehåller" fungerar för både objekt och arrayer, så följande fråga skulle fungera:
SELECT * FROM products WHERE specs->'spec_options' @> '["spec1", "spec2"]';
Som jag tror att du kan omvandla till ActiveRecord-kompatibel syntax så här:
scope :with_spec_options, ->(spec_options) {
where("specs->'spec_option' @> ?", spec_options.to_json)
}