次のようなユーザーがいます
id:1名前:Vicenzo Naves電子メール:(今のところ空です)
システムは「VicenzoGuilhermeNaves」を使用してこのユーザーを見つけようとしています
フルネームを使用してユーザー1を見つける方法について誰か提案がありますか?
問題は、名前と姓だけでなく、フルネームのみを入力として受け取ることができるということです。
次のようなユーザーがいます
id:1名前:Vicenzo Naves電子メール:(今のところ空です)
システムは「VicenzoGuilhermeNaves」を使用してこのユーザーを見つけようとしています
フルネームを使用してユーザー1を見つける方法について誰か提案がありますか?
問題は、名前と姓だけでなく、フルネームのみを入力として受け取ることができるということです。
正規表現を使用して名前の一部をキャプチャし、ミドルネームを無視することができます。
これにより、名前の各部分がキャプチャされます。
([^ ]+)+
使用中で:
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}")