1

我有一个具有以下内容的用户

id:1 姓名:Vicenzo Naves 电子邮件:(暂时为空)

系统正在尝试使用“Vicenzo Guilherme Naves”查找此用户

有人对我如何使用全名找到用户 1 有任何建议吗?

问题是,我只能接收全名作为输入,而不仅仅是名字和姓氏。

4

1 回答 1

0

您可以使用正则表达式来捕获名称的各个部分,而只需忽略中间名。

这将捕获名称的每个部分。

([^ ]+)+

正在使用:

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}")
于 2012-10-12T00:06:16.880 回答