Những gì bạn muốn sử dụng là mã @> > nhà điều hành
, kiểm tra xem giá trị bên trái của bạn có chứa giá trị bên phải hay không. "Chứa" hoạt động cho cả đối tượng và mảng, vì vậy truy vấn sau sẽ hoạt động:
SELECT * FROM products WHERE specs->'spec_options' @> '["spec1", "spec2"]';
Tôi tin rằng bạn có thể chuyển đổi thành cú pháp tương thích với ActiveRecord như sau:
scope :with_spec_options, ->(spec_options) {
where("specs->'spec_option' @> ?", spec_options.to_json)
}