我有项目[:name],我希望能够使用
(item[:name].scan(/[a-z0-9\s]/i).join rescue "") =~ Regexp.new(business.scan(/[a-z0-9\s]/i).join, true)
作为mongoid的一个条件。有没有办法做到这一点?我提出的唯一解决方案是获取所有项目,然后迭代该数组,在该时间点执行正则表达式。
这样做的目的是在网站搜索“Johns”时找到“John's”,反之亦然。
由于
答案 0 :(得分:0)
这是我最终使用的内容。
def self.find_by_name_or_organization(business = nil)
businesses = self.all(:order => "name ASC")
businesses.delete(nil)
if business && !(business.nil? || business.to_s == '')
final_business_array = Array.new
businesses.each do |item|
if (item[:organization].scan(/[a-z0-9\s]/i).join rescue "") =~ Regexp.new(business.scan(/[a-z0-9\s]/i).join, true) ||
(item[:name].scan(/[a-z0-9\s]/i).join rescue "") =~ Regexp.new(business.scan(/[a-z0-9\s]/i).join, true)
final_business_array.push(item)
end
end
final_business_array
else
businesses
end
end