Size: a a a

2020 April 27

E

Eugene in RubyRush
не удивлюсь, если уже есть реализации
источник

S

SundayNight in RubyRush
вопрос имею спросить
а никто не встречал годных гайдов по организации фильтров?
например как вот тут
источник

E

Eugene in RubyRush
по-моему ручками просто делается и всё (если нет промежуточной "поисковой" базы данных/сервиса типа ElasticSearch и т.д.)
источник

E

Eugene in RubyRush
scope = Item.all

if params[:purpose]
 scope = scope.where(purpose: params[:purpose])
end

# и т.д.
источник

S

SundayNight in RubyRush
Eugene
по-моему ручками просто делается и всё (если нет промежуточной "поисковой" базы данных/сервиса типа ElasticSearch и т.д.)
ну ручками мерджить каждый параметр с ума сойдешь
источник

E

Eugene in RubyRush
ну это от 1 до 3 строк
источник

S

SundayNight in RubyRush
особенно когда нечеткое вхождение будет
источник

E

Eugene in RubyRush
что такое нечеткое вхождение?
источник

S

SundayNight in RubyRush
like
источник

E

Eugene in RubyRush
это дело не меняет
источник

E

Eugene in RubyRush
scope = scope.where(title: "title ILIKE ?", params[:title]) if params[:title].present?
источник

E

Eugene in RubyRush
если таких десять штук, то в цикл:

%i(title name description).select { |x| params[x].present? }.each do |p|
 scope = scope.where(p: "#{p} ILIKE ?", params[p])
end
источник

S

SundayNight in RubyRush
так можно params.each |k,v|
источник

E

Eugene in RubyRush
SundayNight
так можно params.each |k,v|
где-то должен быть явный перечень этих параметров, а так пожалуйста
источник

S

SundayNight in RubyRush
Eugene
где-то должен быть явный перечень этих параметров, а так пожалуйста
так протащить через strong params
отбросится левое
источник

E

Eugene in RubyRush
ключи да, но и значения ограничены должны быть
источник

E

Eugene in RubyRush
если там, к примеру, диапазон
источник

S

SundayNight in RubyRush
тоже верно
источник

E

Eugene in RubyRush
есть мега-тупая задача по типу "как ограничить ключи в API таким образом, чтобы нормальная ошибка пользователю возвращалась", которая не имеет простого решения

типа там приходит такая структура:

user: {
 name: 'vasya',
 organization: {
   title: 'Hoofs & Horns, Ltd.',
   inn: 12345
 }
}


И вот если чё-то не то пришло, то вернуть красивую ошибку. Например, вместо inn строку прислали (рассматриваем чисто формальные проверки, грубо говоря не требущих запросов в БД):

errors: {
 user: {
   organization: {
     inn: ["must be a number"]
   }
 }
}
источник

E

Eugene in RubyRush
вот её можно с разной степенью успешности решать всякие ActiveModel валидациями, извращениями со strong params, dry::types и т.д. и т.п., но всё плохо в итоге
источник