我目前正在我们的用户数据库中实现一个搜索表单。我想通过 id 、登录或电子邮件进行搜索。
当然,我认为最好的方法是结合范围和简化形式。所以我为:id_or_login_or_email_like
.
当我在文本字段中输入数字时,一切正常。
但是,当我输入一个单词并按搜索时,我输入的值会丢失并替换为 0(零),搜索结果会返回 ID、名称或登录名中包含 0 的所有用户。
有想法该怎么解决这个吗?我正在使用 Rails 2.3.2 和 SearchLogic 2.4.27。谢谢!
我目前正在我们的用户数据库中实现一个搜索表单。我想通过 id 、登录或电子邮件进行搜索。
当然,我认为最好的方法是结合范围和简化形式。所以我为:id_or_login_or_email_like
.
当我在文本字段中输入数字时,一切正常。
但是,当我输入一个单词并按搜索时,我输入的值会丢失并替换为 0(零),搜索结果会返回 ID、名称或登录名中包含 0 的所有用户。
有想法该怎么解决这个吗?我正在使用 Rails 2.3.2 和 SearchLogic 2.4.27。谢谢!
我认为这是因为在与 id 进行比较时,您的作用域正在与整数进行比较,这会导致您的字符串被转换为 0。尝试使用 .dup 以确保传递给作用域的属性不会更改。
没关系,我找到了一种解决方法:将范围与 OR 组合时,将与整数值相关的范围放在最后。
所以而不是:id_or_login_or_email_like
使用login_or_email_or_id_like
. 我已经通过github提交了这个问题。