Ruby on rails 如何在检查长度之前使轨道验证修剪?

Ruby on rails 如何在检查长度之前使轨道验证修剪?,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,在我的user.rb模型中,我有以下几点: validates :fname, :length => { :minimum => 1, :maximum => 100 }, :unless => Proc.new { |user| user.new_record? || !user.password_confirmation.nil? } 问题是用户可以提交fname作为“,这是所有的空白,这欺骗了验证。如何在查找长度之前进行validates trim?您可以在tr

在我的
user.rb
模型中,我有以下几点:

validates :fname, :length => { :minimum => 1, :maximum => 100 }, :unless => Proc.new { |user|  user.new_record? || !user.password_confirmation.nil? }

问题是用户可以提交fname作为
,这是所有的空白,这欺骗了验证。如何在查找长度之前进行validates trim?

您可以在trim fname中添加before\u validation回调

before_validation :trim_fname

def trim_fname
  self.fname.strip!
end

您可以添加before\u验证回调来修剪fname

before_validation :trim_fname

def trim_fname
  self.fname.strip!
end

也许你可以试试这个宝石:,这可能是一个快速修复


关于,

也许你可以试试这个宝石:,这可能是一个快速解决这个问题的方法


您好,

谢谢,但对于所有领域/型号,这样做似乎太疯狂了。难道没有内置的magic rails方法可以做到这一点吗?我不确定是否有一种方法可以为所有模型做到这一点,但对于单个模型,您可以迭代每个属性并在其上调用strip。@AnApprentice-您在寻找什么样的魔法?再看一次您的原始验证,它的工作原理与所写的完全相同。问题是你有一个额外的条件需要考虑。有时你只需要编写代码就可以完成你想要的。我可以在我的文件中添加一些东西吗,除非它修剪和检查长度?谢谢,但对所有字段/模型都这样做似乎很疯狂。难道没有内置的magic rails方法可以做到这一点吗?我不确定是否有一种方法可以为所有模型做到这一点,但对于单个模型,您可以迭代每个属性并在其上调用strip。@AnApprentice-您在寻找什么样的魔法?再看一次您的原始验证,它的工作原理与所写的完全相同。问题是你有一个额外的条件需要考虑。有时你只需要编写代码来做你想做的事情。我可以在我的代码中添加一些东西吗,除非它修剪和检查长度?