(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

相关文章
相关标签/搜索