sle*_*n36 0 ruby activerecord ruby-on-rails
我编写了一个快速name
模型方法,根据存在的字段返回用户名.
class User < ActiveRecord::Base
validates :first_name,
presence: true,
length: {
maximum: 64,
}
validates :last_name,
length: {
maximum: 64,
}
def name
"#{self.first_name}#{" #{self.last_name}" if self.last_name.present?}"
end
end
Run Code Online (Sandbox Code Playgroud)
如果仅first_name
存在该字段,则应返回:
=> "Joe"
Run Code Online (Sandbox Code Playgroud)
如果两者first_name
和last_name
字段都存在,那么它应该返回:
=> "Joe Bloggs"
Run Code Online (Sandbox Code Playgroud)
上面的代码工作,但我觉得它可以清理很多.
这是一种更优雅的方式吗?
谢谢
你可以利用squish
.
它从字符串的两端删除所有空格,并将多个空格更改为一个空格.
def name
"#{self.first_name} #{self.last_name}".squish
end
Run Code Online (Sandbox Code Playgroud)
此外,因为它是一个实例方法,您可以删除 self
def name
"#{first_name} #{last_name}".squish
end
Run Code Online (Sandbox Code Playgroud)
例如.
" foo bar ".squish
#=> "foo bar"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
256 次 |
最近记录: |