Ruby on rails 有条件地添加空格+;弦轨5

Ruby on rails 有条件地添加空格+;弦轨5,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,我编写了一个快速的namemodel方法,该方法根据存在的字段返回用户名 class用户

我编写了一个快速的
name
model方法,该方法根据存在的字段返回用户名

class用户
如果只存在
first_name
字段,则应返回:

=> "Joe"
=> "Joe Bloggs"
如果同时存在,
first\u name
last\u name
字段,则应返回:

=> "Joe"
=> "Joe Bloggs"
上面的代码可以工作,但我觉得可以清理很多

这是一种更优雅的方式吗

谢谢

您可以利用

它删除字符串两端的所有空格,并将多个空格更改为一个空格

def name
  "#{self.first_name} #{self.last_name}".squish
end
此外,由于它是一种实例方法,您可以删除
self

def name
  "#{first_name} #{last_name}".squish
end
例如


我通常的做法是:

[
  element_1,
  element_2,
  ...
  element_n
].compact.join(" ")
出于数据清理目的,您可以:

[
  element_1,
  element_2,
  ...
  element_n
].map(&:squish).map(&:presence).compact.join(" ")
如果您正在制作一个列表,那么在Rails中您可以尝试:

[
  element_1,
  element_2,
  ...
  element_n
].map(&:squish).map(&:presence).compact.to_sentence
。。。这将为您提供一个国际化的字符串形式:

"a, b, c, and d"