1

item[:name] があり、使用できるようにしたい

(item[:name].scan(/[a-z0-9\s]/i).join rescue "") =~ Regexp.new(business.scan(/[a-z0-9\s]/i).join, true)

モンゴイドの条件として。これを行う方法はありますか?私が思いついた唯一の解決策は、すべてのアイテムを取得し、その配列を反復処理して、その時点で正規表現を実行することです。

これの目標は、Web サイトが "Johns" で検索されたときに "John's" を見つけ、その逆も同様であることです。

ありがとう

4

1 に答える 1

0

Here is what i ended up using.

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
于 2013-08-01T16:37:28.737 に答える