ruby-on-rails – Rails 3在所有表单上删除before_validation的空格

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – Rails 3在所有表单上删除before_validation的空格前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我对Rails相对较新,有点惊讶这不是一个可配置的行为……至少没有一个我能找到的?!?我原本以为99%的表格都会受益于从所有字符串中删除的空格.文字字段?!?猜猜我错了……

无论如何,我正在寻找一种干燥的方法来从Rails 3应用程序中的表单字段(类型:string&:text)中删除所有空格.

视图有自动引用(包括?)并可用于每个视图的助手……但模型似乎没有这样的东西?!?或者他们呢?

所以目前我做的是首先需要的,然后包括whitespace_helper(又名WhitespaceHelper).但这对我来说似乎并不是很干,但它有效……

ClassName.rb:

  1. require 'whitespace_helper'
  2.  
  3. class ClassName < ActiveRecord::Base
  4. include WhitespaceHelper
  5. before_validation :strip_blanks
  6.  
  7. ...
  8.  
  9. protected
  10.  
  11. def strip_blanks
  12. self.attributeA.strip!
  13. self.attributeB.strip!
  14. ...
  15. end

LIB / whitespace_helper.rb:

  1. module WhitespaceHelper
  2. def strip_whitespace
  3. self.attributes.each_pair do |key,value|
  4. self[key] = value.strip if value.respond_to?('strip')
  5. end
  6. end

我想我正在寻找一个单独的(DRY)方法(类?)来放置一个(lib /?),它将获取一个params(或属性)列表并从每个属性w中删除空格(.strip!?) / out被具体命名.

解决方法

创建一个before_validation帮助器,如 here所示
  1. module Trimmer
  2. def trimmed_fields *field_list
  3. before_validation do |model|
  4. field_list.each do |n|
  5. model[n] = model[n].strip if model[n].respond_to?('strip')
  6. end
  7. end
  8. end
  9. end
  10.  
  11. require 'trimmer'
  12. class ClassName < ActiveRecord::Base
  13. extend Trimmer
  14. trimmed_fields :attributeA,:attributeB
  15. end

猜你在找的Ruby相关文章