когда я передавал пустое значение в параметрах, все мои данные показываются в рельсах - PullRequest
0 голосов
/ 02 июня 2018
def policy_details
  policy_details = Policy.where("policy_number LIKE ? or assured_name LIKE ? or application_number LIKE ? or proposer_name LIKE ?","%#{params[:policy_number].present?}%","%#{params[:assured_name]}%","%#{params[:application_number]}%",
                                  "%#{params[:proposer_name]}%")

  if policy_details.present?
    policy_details = policy_details.select(:assured_name, :policy_number, :application_number, :id, :issuance_date, :proposer_name, :policy_name, :base_premium)
  end
  output = {status: '10', data: policy_details}.to_json
  render json: output, status: :ok
end

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

"%" соответствует всему, и вы получите все записи в результате.

so you can use ".present?". its working for if the value is that search was consider otherwise not.  

policy_details = policy_details.where('assured_name LIKE ?',"%#{params[:assured_name]}%") if  params[:assured_name].present?

    policy_details = policy_details.where('proposer_name LIKE ?',"%#{params[:proposer_name]}%") if  params[:proposer_name].present?

    policy_details = policy_details.where('application_number LIKE ?',"%#{params[:application_number]}%") if params[:application_number].present?

    policy_details = policy_details.where('client_id LIKE ?',"%#{params[:client_id]}%") if  params[:client_id].present?

    policy_details = policy_details.where('advisor_code LIKE ?',"%#{params[:advisor_code]}%") if  params[:advisor_code].present?
0 голосов
/ 02 июня 2018

Если params[:assured_name] - ноль или пустая строка, то

"%#{params[:assured_name]}%"

становится

"%%"

Так как % является символом подстановки, выполнение команды '%%' соответствует всеми вы получите все записи в результате.

База данных работает так, как ожидалось.Вам нужно определить, что вы хотите, чтобы ваш запрос был, когда нет assured_name.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...