запрос активной записи ГДЕ КЛАУЗА имеет пустое значение или нет - PullRequest
0 голосов
/ 16 мая 2019

Как лучше всего запрашивать активную запись, если вы не знаете, будет ли это значение пустым или нет.

так что, на мой взгляд, у меня есть эта форма для отправки запроса на контроллер для запроса

   <%= form_tag("/worksteps", method: "get") do %>
    <div>
      <span>Work Steps</span>
      <%= label_tag(:attrib, "All") %>
        <%# "is not null" is a hack to query all %>
      <%= radio_button_tag(:attrib, "is not null", checked = true ) %>
        <%# workstep_attrib are the column names %>
      <% @workstep_attrib.each do |attrib| %>
      <%= label_tag(:attrib, attrib.name) %>
        <%# value is a hack it will render "= 21" %>
      <%= radio_button_tag(:attrib, "= #{attrib.id}") %> 
      <%end%>
    </div>
    <div>
      <%= label_tag :dent_case, 'Search Case'%>
      <%= text_field_tag :dent_case%>
      <%= submit_tag :search%>
    </div>
  <%end%>

<%= radio_button_tag(:attrib, "is not null", checked = true ) %> взлом, который я сделал, чтобы запросить все

<%= radio_button_tag(:attrib, "= #{attrib.id}") %> взломать также запрос определенного столбца

и это то, что я получил на своем контроллере

// поскольку первая загрузка пуста

 if !params[:attrib]
          params[:attrib] = "is not null"
 end

// код запроса, где выражение funky

Spree::WorkorderProductWorkstep.includes(product_workstep: [:workstep],                                          
                                                            workorder: [:product,
                                                            denture_design: [:denture_design_spec],
                                                            order: [:user]])
                                                                            .where("spree_worksteps.id #{params[:attrib]}")
                                                                            .references(:workstep)

Это их другой путь? Я также осведомлен о том, что риск для безопасности в том, где пункт, где я не санирую входящие данные, но это не мой приоритет на данный момент


UPDATE:

Я также добавил это уродливое решение в тот же запрос

 if !params[:dent_case] || params[:dent_case].empty?
          params[:dent_case] = "is not null"
        else 
          params[:dent_case] = "= #{params[:dent_case]}"
        end

.where("denture_designs.id #{params[:dent_case]}")

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