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

问题描述:

我有一个简单的查询来显示活动的用户,但不知何故它仍显示不活动的用户。我正在使用狮身人面像。查询看起来像:如何在rails中使用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,...} 

的condiitions包括:is_expired =>假,但它获取那些具有用户:is_expired =真。

我需要做些什么才能使它只抓取那些没有过期的记录?

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

编辑:实际上它开始在本地工作,而不是生产。我终于看到执行命令 的输出RAILS_ENV =生产rake thinking_sphinx:索引 ,并看到一行如下所示: 错误:索引'user_core':未能创建/路径/到/ application/production/user_core。 spm:权限被拒绝。

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

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