我有一个具有以下内容的用户
id:1 姓名:Vicenzo Naves 电子邮件:(暂时为空)
系统正在尝试使用“Vicenzo Guilherme Naves”查找此用户
有人对我如何使用全名找到用户 1 有任何建议吗?
问题是,我只能接收全名作为输入,而不仅仅是名字和姓氏。
我有一个具有以下内容的用户
id:1 姓名:Vicenzo Naves 电子邮件:(暂时为空)
系统正在尝试使用“Vicenzo Guilherme Naves”查找此用户
有人对我如何使用全名找到用户 1 有任何建议吗?
问题是,我只能接收全名作为输入,而不仅仅是名字和姓氏。
您可以使用正则表达式来捕获名称的各个部分,而只需忽略中间名。
这将捕获名称的每个部分。
([^ ]+)+
正在使用:
params[:user] =~ /([^ ]+)+/
User.find_by_name("#{$1} #{$3}")
注意:如果说名称有两个中间名等,这将不起作用。如果这是一个问题,那么您可以修改它以满足您的需要。也许像这样:
parts = params[:user].scan(/([^ ]+)+/)
# parts will equal [["Vicenzo"], ["Guilherme"], ["Naves"]]
User.find_by_name("#{parts.first.first} #{parts.last.last}")