1. 程式人生 > >(GoRails) 如何去掉form輸入框頭尾的空格;何時用callbacks,gem;

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

ng- create attr 自定義 back include mail 核心 要去

視頻: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;