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