我正在尝试自定义Ransack以允许搜索文本字段,并且可能有hansack忽略dash
字符。
如果我在搜索框中输入此内容:
123456
Ransack查询将无法在DB中找到此记录:
123-456
现在,如果我不输入短划线,则无法找到记录。我理解为什么它试图匹配数据库记录,显然没有找到它,因为要求破折号找到该记录。
是否可以自定义Ransack,以便搜索仍然可以在params中找到没有破折号的记录?
答案 0 :(得分:1)
看起来创建一个自定义Ransacker可以解决这个问题。
ransacker :number do
Arel.sql("translate(number, '-', '')")
end
这将在使用Ransack进行搜索时从数据库的数据库表示中删除破折号。