1. 使用String#strip。能够去掉首尾的whitespace。javascript
2. 若是是User类中的email, name等fields。能够在User类中使用:java
validates :email, presence: truegit
def email=(value)github
super(value.strip)spa
endorm
super关键字: 调用当前方法在父类中的方法。视频
使用email=方法,分配的value被stripped,而后返回了原始的email=方法。ip
不要用javascript实现去掉空格的功能,由于javascript能够被关掉。ci
sit
反例:
在Model层,User类,自定义一个callback方法:after_create :send_welcome_email
这致使业务逻辑进入了model 回调。当业务逻辑发生变化,这个代码就不适用了。
正例:
在Model层,User类,自定义一个callback方法:before_validation :strip_whitespace
def strip_whitespace
self.email = email.to_s.strip
self.username = username.to_s.strip
end
全部须要去掉空格的fields均可以放入这个方法中。
⚠️ 核心要点:要和业务逻辑相关。
若是有多个model须要使用strip_whitespanc则能够把这个功能作成一个类,
而后在须要的地方:
include StripWhitespace
strip_whitespace :email, :username
strip whitespace有一个小的gem 能够使用:
https://github.com/rmm5t/strip_attributes/blob/master/lib/strip_attributes.rb