【发布时间】:2011-07-29 16:38:47
【问题描述】:
我目前在我的模型中使用范围在数据库中执行搜索。我可以堆叠这些范围,它会输出匹配所有参数的结果。
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()”。有可能吗?如果有,怎么做?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 full-text-search