我正在尝试使用ransack进行一个简单的搜索,但是当我执行搜索时,会得到以下错误:

ActiveRecord::StatementInvalid in GrupoFamiliars#index

PG::UndefinedFunction: ERROR:  operator does not exist: integer ~~* integer
LINE 1: ...rupo_familiars" WHERE ("grupo_familiars"."numero" ILIKE 0) L...
                                                             ^
HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.
: SELECT  "grupo_familiars".* FROM "grupo_familiars" WHERE ("grupo_familiars"."numero" ILIKE 0) LIMIT 20 OFFSET 0

这是我的密码
def index
  @search = GrupoFamiliar.search(params[:q])
  @grupo_familiars = @search.result.paginate(:page => params[:page], :per_page => 20)
end

<%= search_form_for @search,url: grupo_familiars_path, :class => "form-inline", :builder => SimpleForm::FormBuilder do |f| %>
  <%= f.number_field :numero_cont, :class => "form-control", placeholder: "Numero" %>
  <button type="submit" class="btn btn-default">Buscar</button>
<% end %>

有什么想法吗?

最佳答案

尝试将此添加到模型中:

class GrupoFamiliar
  # your code and stuff
  # ...

  private

  ransacker :numero do
    Arel.sql("to_char(\"#{table_name}\".\"numero\", '99999')")
  end
end

10-06 01:30