Ce que vous voulez utiliser est le @>
opérateur
, qui teste si votre valeur de gauche contient la valeur de droite. "Contient" fonctionne à la fois pour les objets et les tableaux, donc la requête suivante fonctionnerait :
SELECT * FROM products WHERE specs->'spec_options' @> '["spec1", "spec2"]';
Ce que je pense que vous pouvez transformer en une syntaxe compatible avec ActiveRecord comme suit :
scope :with_spec_options, ->(spec_options) {
where("specs->'spec_option' @> ?", spec_options.to_json)
}