【发布时间】:2014-01-17 03:13:36
【问题描述】:
我正在使用 Rails4 和 Mongoid 进行优化搜索。这是我的搜索参数和表单,
我逐个构建查询:
if params[:procedure_id]
@blood_banks = BloodBank.where(:procedure_id => params[:procedure_id])
end
if params[:location_ids]
@blood_banks = BloodBank.where(:location_id.in => params[:location_ids])
end
...
if condition
end
如果我需要在“Hebbal”位置搜索“椎间盘切除术”程序,那么我需要定义 if 条件如下,
if params[:procedure_id].present? && params[:location_id].present?
...
end
然后我需要对所有这样的搜索组合(4x3x2x1)进行搜索,以进行优化搜索!!! 这是实现相同的最佳方法。
上述情况你是怎么做到的???
我不能对所有可能的if条件,他们有什么捷径吗!!!
如何实现以下代码:
if params[:fees].present?
if params[:fees] == "300"
@doctor_clinic = DoctorClinic.where( :consultation_fees => { '$lte' => params[:fees] }).map(&:doctor_id)
@doctors = Doctor.where(
{ :id.in => @doctor_clinic })
end
if params[:fees] == "500"
@doctor_clinic = DoctorClinic.where( :consultation_fees => { '$gte' => 300, '$lte' => params[:fees] }).map(&:doctor_id)
@doctors = Doctor.where(
{ :id.in => @doctor_clinic })
end
if params[:fees] == "1000"
@doctor_clinic = DoctorClinic.where( :consultation_fees => { '$gte' => 500, '$lte' => params[:fees] }).map(&:doctor_id)
@doctors = Doctor.where(
{ :id.in => @doctor_clinic })
end
if params[:fees] == "1001"
@doctor_clinic = DoctorClinic.where( :consultation_fees => { '$gte' => params[:fees] }).map(&:doctor_id)
@doctors = Doctor.where(
{ :id.in => @doctor_clinic })
end
end
【问题讨论】:
标签: ruby-on-rails mongodb ruby-on-rails-4 mongoid mongoid3