如何在rails中使用sphinx并根据列值排除结果

时间:2009-11-25 07:25:16

标签: ruby-on-rails search sphinx

我有一个简单的查询来显示活跃的用户,但不知怎的,它仍然显示非活动用户。我正在使用狮身人面像。查询如下所示:

User.search keywords,:conditions=>conditions, :match_mode=>:boolean, :order =>sort_order.to_s, :page => page,:per_page =>per_page

条件哈希看起来像这样:

conditions = {:is_expired => false, :is_disabled => false,...}

条件包括:: is_expired => false,但它会获取具有以下内容的用户:is_expired = true。

我需要做些什么才能获取那些未过期的记录?

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

确保索引is_expired和is_disabled方法。如果你已经这样做了,请道歉。

答案 2 :(得分:1)

我将列的类型从布尔值更改为整数,并且它开始工作了!

编辑:实际上它开始在本地工作,而不是生产。我终于看了一下执行命令的输出     RAILS_ENV =生产佣金thinking_sphinx:index 并看到一行如下:     错误:index'user_core':无法创建/path/to/application/production/user_core.spm:权限被拒绝。

然后我看到文件权限是“root root”而不是运行index命令的用户。这是因为一旦部署者执行“sudo su - ”等部署,并且创建的新文件是root用户创建者等。我必须删除该文件,并在运行index命令后开始正常工作。我不确定现在是否可以从整数列类型恢复为布尔值。