Как сортировать по зарплате с Ransack и игнорировать символ доллара?

В настоящее время я пытаюсь создать несколько функций сортировки для моего проекта rails, используя ransack gem. Проблема, с которой я столкнулся с ransacker, заключается в том, что я не могу прочитать формат строки, потому что в некоторых сообщениях и запятых также есть ($). То, что я хотел бы сделать, это по-прежнему сортировать атрибут данных и игнорировать как условный символ доллара $, так и запятые тысячи позиций (в некоторых случаях могут не включаться) и добавлять текущий ввод из окна поиска

Например:

string = "$30,000" -> проанализируйте, чтобы удалить $ и оставить только 30000 для поисковой системы, чтобы найти записи, которые включают число и то, что было написано во входных данных search_form (job.job_title). Код, который я написал, приведен ниже, он может быть неправильным, поскольку я пробовал несколько подходов. Конечный результат: Ransack должен искать «30000 маркетинговых позиций».

вид на рельсы

<li>$30,000+ <%= sort_link(@q, :salary_between_30_and_40k, default_order: :desc) %></li>

работа.рб

 ransacker :salary_between_30_and_40k do
    Arel.sql('SELECT * FROM JOBS WHERE job.hourly_wage_salary BETWEEN 30000 AND 40000')
  end

person Johnny C    schedule 12.02.2018    source источник


Ответы (1)


Правильный подход здесь — перенести базу данных так, чтобы сведения о зарплате сохранялись в виде числового значения, а не строки с форматированием.

person thomasfedb    schedule 12.02.2018
comment
Это может не сработать, потому что пользователь также может использовать почасовую оплату. Который включает десятичный разряд. Я не обязательно буду отслеживать такие данные. Но они будут отображаться в результатах поиска по умолчанию. - person Johnny C; 12.02.2018
comment
Десятичные значения также могут храниться практически в любой базе данных SQL. - person thomasfedb; 12.02.2018
comment
Хорошо, я попробую это. Спасибо. - person Johnny C; 12.02.2018