Ruby on rails 3 关于两个领域的斯芬克斯复杂排序的思考

Ruby on rails 3 关于两个领域的斯芬克斯复杂排序的思考,ruby-on-rails-3,Ruby On Rails 3,我用斯芬克斯思考搜索。现在我需要按两个字段对搜索结果排序。 复杂的部分从以下内容开始: 如果“批准日期”不为空,则使用它,否则使用“在日期创建日期”按降序排序结果 我实现这一点时并不认为斯芬克斯是: @model_values=Model.find(:all, :conditions => {:name => :johndoe}, :select => "*,if(date_

我用斯芬克斯思考搜索。现在我需要按两个字段对搜索结果排序。
复杂的部分从以下内容开始:

如果“批准日期”不为空,则使用它,否则使用“在日期创建日期”按降序排序结果

我实现这一点时并不认为斯芬克斯是:

@model_values=Model.find(:all, 
                         :conditions => {:name => :johndoe}, 
                         :select => "*,if(date_approved,date_approved,created_at) as my_date", 
                         :order => 'my_date DESC')  
但当我开始思考斯芬克斯时,我被难住了。
感谢您的帮助。

感谢SQL方面的支持,您可能正在寻找ROR来生成

ORDER BY COALESCE(date_approved, created_at) DESC

COALESCE()返回第一个非空参数

可能值得考虑添加一个新列,例如
last\u update
,每当更新记录时,该列将自动更新为
日期创建的列或
批准日期的列。然后你可以在Sphinx中按上次更新排序。谢谢你的建议。我希望我可以在不添加数据库列的情况下完成这项工作。我想那是最后的办法了。