(GoRails) 如何去掉form輸入框頭尾的空格;什麼時候用callbacks,gem;

視頻:https://gorails.com/episodes/when-callbacks-and-adding-dependencies-are-good?autoplay=1

主題:應當在何時使用callbacks, 應當何時使用小的功能gem?

根據須要靈活把握


 

 

如何去掉Form輸入框中,在header或trailing不當心輸入的空格?

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

相關文章
相關標籤/搜索