Я попытался выполнить поиск, и я уверен, что он должен существовать, но мои условия поиска должны быть немного ошибочными.
Я хочу реализовать более эффективный способ фильтрации JSON ответов API в моем приложении.
Например, со следующим запросом (свободно основанным на синтаксисе API Chargebee):
GET /invoices?customer_email[in]=[person1@abc.com,person2@abc.com]&created_at[lt]=2019-06-01&total_amount[gt]=500&sort_by[desc]=id
запрос ActiveRecord будет выглядеть примерно так (псевдокод):
Invoice.where("customer_email IN ?", ['person1@abc.com', 'person2@abc.com'])
.where("created_at < ?", "2019-06-01")
.where("total_amount > ?", 500)
.order(id: :desc)
или на простом английском языке Engli sh:
A list of invoices
- where the customer's email is person1@abc.com or person2@abc.com
- which was created before 2019-06-01
- where the total amount was greater than 500
- sorted by id descending
Я надеюсь, что существующий Gem может получить строку запроса и построить ActiveRecord, как описано выше.
Синтаксис строки запроса, ожидаемый гемом, не обязательно должен быть идентичен приведенному выше, а должен быть примерно таким же. т. е. более мощный фильтр, чем встроенный в Rails синтаксис фильтрации, который создает громоздкие длинные строки запросов.
Кто-нибудь может подсказать мне правильное направление?