我有这样的思考狮身人面像搜索条件或运算符:
Oil.search "(@oiliness #{params[:oiloiliness].gsub(/[^0-9A-Za-z]/, '')} | @oiliness #{params[:oiloiliness]}) | (@description #{params[:descr]})
但我必须更改它,以便我可以使用我的 or 运算符,但还可以在条件中添加一些 if 语句:例如我的 params[:descr] 是空的,所以我不需要通过 @description 搜索(它也会抛出错误)。
我需要类似 if params[:descr] then didn't use this part (@description #{params[:descr]}) 的东西。但是最好的方法是什么?
也许使用条件“语法”更好更容易,例如:
Oil.search :conditions => {oiliness: "#{params[:oiloiliness].gsub(/[^0-9A-Za-z]/, '')} | #{params[:oiloiliness]}", params[:descr].present? ? description: "#{params[:descr]" : nil}
像这样的东西......
还:
ThinkingSphinx::Index.define :oil, :with => :active_record do
indexes :oiliness
indexes :structure
indexes :manufacturer
indexes :capacity
indexes :description
end
我也尝试:
@pre_oils = Oil.search :conditions => {oiliness: "#{params[:oiloiliness].gsub(/[^0-9A-Za-z]/, '')} | #{params[:oiloiliness]}", description: "#{params[:oiloiliness].gsub(/[^0-9A-Za-z]/, '')} | #{params[:oiloiliness]}", capacity: params[:oilsize], manufacturer: params[:oilbrand]}