自定义 Ransacker 以忽略数据库中的破折号
Custom Ransacker to ignore dash in database
我正在尝试自定义 Ransack 以允许搜索文本字段并可能让 ransack 忽略 dash
字符。
示例:
如果我在搜索框中输入:
123456
Ransack 查询不会在数据库中找到这条记录:
123-456
现在,如果我不输入破折号,将找不到记录。我明白为什么它试图匹配数据库记录,但显然没有找到它,因为需要破折号才能找到该记录。
是否可以自定义 Ransack,以便搜索仍能找到参数中没有破折号的记录?
看起来创建一个自定义的 Ransacker 就可以解决这个问题。
ransacker :number do
Arel.sql("translate(number, '-', '')")
end
这将在使用 Ransack 搜索时从数据的数据库表示中删除破折号。
我正在尝试自定义 Ransack 以允许搜索文本字段并可能让 ransack 忽略 dash
字符。
示例:
如果我在搜索框中输入:
123456
Ransack 查询不会在数据库中找到这条记录:
123-456
现在,如果我不输入破折号,将找不到记录。我明白为什么它试图匹配数据库记录,但显然没有找到它,因为需要破折号才能找到该记录。
是否可以自定义 Ransack,以便搜索仍能找到参数中没有破折号的记录?
看起来创建一个自定义的 Ransacker 就可以解决这个问题。
ransacker :number do
Arel.sql("translate(number, '-', '')")
end
这将在使用 Ransack 搜索时从数据的数据库表示中删除破折号。