ขณะนี้ฉันกำลังใช้ขอบเขตในโมเดลของฉันเพื่อทำการค้นหาภายในฐานข้อมูล ฉันสามารถซ้อนขอบเขตเหล่านี้ได้ และมันจะให้ผลลัพธ์ที่ตรงกับพารามิเตอร์ทั้งหมด
scope :search_between, lambda{|begin_date, end_date|
where "sub.date BETWEEN ? AND ?", begin_date, end_date
}
สิ่งที่ฉันประสบปัญหาคือการรวมการค้นหาคำหลักที่จะค้นหาฐานข้อมูลทั้งหมดและแสดงผลลัพธ์ที่มีผลรวมของคำหลัก ฉันต้องการทำสิ่งนี้ (แสดงเพื่อความเรียบง่าย):
scope :keywords, lambda{|search|
search.chomp.split(/,\s*/) do |item|
where "date like ? or city like ? or state like ?", "%#{item}%" and
where "date like ? or city like ? or state like ?", "%#{item}%" and
where "date like ? or city like ? or state like ?", "%#{item}%"
end
}
ขณะนี้ฉันกำลังใช้สิ่งนี้เพื่อดูแลการค้นหาหลายคอลัมน์:
scope :keywords, lambda{|search|
search.chomp.split(/,\s*/) do |item|
where(Sub.column_names.map {|cn| "#{cn} like ?" }.join("or "), "%#{item}%"] Sub.column_names.size)).join(' AND ')
end
}
ปัญหาของฉันคือฉันต้องการทำ "where()" หลายรายการในขอบเขต เป็นไปได้หรือไม่ และถ้าเป็นเช่นนั้น ทำอย่างไร?