1

次のようなユーザーがいます

id:1名前:Vicenzo Naves電子メール:(今のところ空です)

システムは「VicenzoGuilhermeNaves」を使用してこのユーザーを見つけようとしています

フルネームを使用してユーザー1を見つける方法について誰か提案がありますか?

問題は、名前と姓だけでなく、フルネームのみを入力として受け取ることができるということです。

4

1 に答える 1

0

正規表現を使用して名前の一部をキャプチャし、ミドルネームを無視することができます。

これにより、名前の各部分がキャプチャされます。

([^ ]+)+

使用中で:

params[:user] =~ /([^ ]+)+/
User.find_by_name("#{$1} #{$3}")  

注:たとえば、名前に2つのミドルネームがある場合など、これは機能しません。それが問題になる場合は、ニーズに合わせて変更できます。多分そのように:

parts = params[:user].scan(/([^ ]+)+/)
  # parts will equal [["Vicenzo"], ["Guilherme"], ["Naves"]]
User.find_by_name("#{parts.first.first} #{parts.last.last}")
于 2012-10-12T00:06:16.880 に答える