Мне нужно обработать данные фильтра в бэкэнде и вернуть человека, который соответствует этим условиям фильтра.Условия фильтрации должны быть похожи на ((filter A or filter B or filter C) and (filter D or filter E))
Условия фильтрации должны быть похожи на «имя содержит имя».У меня есть области для каждого условия фильтра, например, scope :contains,-> (params){ where('name ilike :name', name: params[:name]}
.
. Я планирую построить запрос с union
для ORing фильтров.Я планировал получить результат каждого фильтра User.contains(params)
, используя to_sql.И объединить все фильтры с или условием, используя объединение SQL, и объединить условия и, используя активную запись merge
.И выполнить необработанный запрос, используя ActiveRecord::Base.connection.execute(sql)
.
Есть ли другие способы обработки фильтров такого типа?