所以我有很多具有很多属性的东西。我正在快速搜索,用户在文本框 params[:q] 中输入了一个术语,然后我搜索该批次的每个字段以查看它是否匹配。我还想检查他们的属性,如果属性匹配,并且只返回地段。
我做到了,像这样
if params[:q]
@property_lots = []
@lots.each do |lot|
@property_lots << lot if lot.properties.where(["name LIKE :query OR value LIKE :query", :query => "%#{params[:q]}%"]).any?
end
@lots = @lots.where(["number LIKE :query OR title LIKE :query OR description LIKE :query OR position LIKE :query OR notes LIKE :query OR notes LIKE :query OR buyer_id LIKE :query OR
display_type LIKE :query OR status LIKE :query", :query => "%#{params[:q]}%"])
@lots = @lots.merge(@property_lots)
@lots.uniq!
end
这样做的问题是它将 activerecord:relation 变成了一个数组,这会破坏我的分页、稍后添加的范围以及我的重新排序。有没有办法在不创建数组的情况下做到这一点?