自定义Ransacker忽略数据库中的破折号

时间:2018-04-30 22:22:11

标签: ruby-on-rails ruby ransack

我正在尝试自定义Ransack以允许搜索文本字段,并且可能有hansack忽略dash字符。

实施例

如果我在搜索框中输入此内容:

123456

Ransack查询将无法在DB中找到此记录:

123-456

现在,如果我不输入短划线,则无法找到记录。我理解为什么它试图匹配数据库记录,显然没有找到它,因为要求破折号找到该记录。

是否可以自定义Ransack,以便搜索仍然可以在params中找到没有破折号的记录?

1 个答案:

答案 0 :(得分:1)

看起来创建一个自定义Ransacker可以解决这个问题。

ransacker :number do
  Arel.sql("translate(number, '-', '')")
end

这将在使用Ransack进行搜索时从数据库的数据库表示中删除破折号。