0
我使用洗劫允许用户做动力搜索:洗劫:布尔属性被忽略,将返回所有的记录,而不是
控制器:
@q = Visit.search(params[:q]);
@visits = @q.result(distinct: true)
@q.build_condition
型号:
def self.ransackable_attributes auth_object = nil
(column_names - UNRANSACKABLE_ATTRIBUTES) + (_ransackers.keys)
end
查看:
<%= search_form_for @q, url: doctor_visits_path do |f| %>
<%= f.condition_fields do |c| %>
<%= render "condition_fields", f: c%>
<% end %>
<p><%= link_to_add_fields "Add condition", f, :condition %>
<div class="actions"><%= f.submit "Search", {:class => "btn"} %></div>
<% end %>
部分:
<div class="field">
<%= f.attribute_fields do |a| %>
<%= a.attribute_select({ associations:
[:specialists, :treatment_factors]
},{:class => "form-control"}) %>
<% end %>
<%= f.predicate_select({},{:class => "form-control"}) %>
<%= f.value_fields do |v| %>
<%= v.text_field :value,{:class => "form-control"} %>
<% end %>
<%= link_to "Remove", '#', class: "remove_fields" %>
</div>
我在访问表中有几个布尔属性。当我选择的第一个字段的布尔属性,在第二(谓语场)真或假,离开第三值字段为空,正确生成的参数,可以,但SQL查询是没有的,条件将被忽略,而表中的所有记录都会返回。 可能是什么原因?
没有帮助。我用'ransacker:bool_test do Arel.sql(“to_char(\”#{table_name} \“。”bool_test \“,'99999')”) end' –
您使用哪个数据库? – Sunny
PostgreSQL //“注释的长度至少为15个字符。” –