Това, което искате да използвате, е @>
оператор
, който тества дали вашата лява стойност съдържа стойността отдясно. „Съдържа“ работи както за обекти, така и за масиви, така че следната заявка ще работи:
SELECT * FROM products WHERE specs->'spec_options' @> '["spec1", "spec2"]';
Което според мен можете да трансформирате в синтаксис, съвместим с ActiveRecord, така:
scope :with_spec_options, ->(spec_options) {
where("specs->'spec_option' @> ?", spec_options.to_json)
}