(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。
2. 如果是User類中的email, name等fields。可以在User類中使用:
validates :email, presence: true
def email=(value)
super(value.strip)
end
super關鍵字: 調用當前方法在父類中的方法。
使用email=方法,分配的value被stripped,然後返回了原始的email=方法。
不要用javascript實現去掉空格的功能,因為javascript可以被關掉。
s
需要註意,自定義的回調的適用範圍
反例:
在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
(GoRails) 如何去掉form輸入框頭尾的空格;何時用callbacks,gem;