1

我目前正在我们的用户数据库中实现一个搜索表单。我想通过 id 、登录或电子邮件进行搜索。

当然,我认为最好的方法是结合范围和简化形式。所以我为:id_or_login_or_email_like.

当我在文本字段中输入数字时,一切正常。

但是,当我输入一个单词并按搜索时,我输入的值会丢失并替换为 0(零),搜索结果会返回 ID、名称或登录名中包含 0 的所有用户。

有想法该怎么解决这个吗?我正在使用 Rails 2.3.2 和 SearchLogic 2.4.27。谢谢!

4

2 回答 2

1

我认为这是因为在与 id 进行比较时,您的作用域正在与整数进行比较,这会导致您的字符串被转换为 0。尝试使用 .dup 以确保传递给作用域的属性不会更改。

于 2011-02-01T04:15:34.443 回答
1

没关系,我找到了一种解决方法:将范围与 OR 组合时,将与整数值相关的范围放在最后。

所以而不是:id_or_login_or_email_like使用login_or_email_or_id_like. 我已经通过github提交了这个问题。

于 2011-02-01T15:52:09.460 回答