Как лучше всего запрашивать активную запись, если вы не знаете, будет ли это значение пустым или нет.
так что, на мой взгляд, у меня есть эта форма для отправки запроса на контроллер для запроса
<%= 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]}")