我希望我的用户模型在保存之前对一些输入进行清理.现在,一些简单的空格剥离就可以了.
我认为在验证之前进行剥离是一个好主意,这样的validates_university_就可以避免意外的重复.
class User < ActiveRecord::Base
has_many :open_ids
validates_presence_of :name
validates_presence_of :email
validates_uniqueness_of :name
validates_uniqueness_of :email
validates_format_of :email, :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i
before_validation :strip_whitespace, :only => [:name, :email, :nick]
private
def strip_whitespace(value)
value.responds_to?('strip') ? value.strip : value
end
end
但是,这段代码有一个错误ArgumentError:参数数量错误(0代表1).我以为回调会传递这些值.
还有:这真的是个好主意吗?或者我应该在空间上验证并告诉用户"哈利"包含无效的空格(我想允许"哈利·波特"而不是"哈利·s·斯波特").
编辑:正如在一篇 comments 中指出的,我的代码是错误的(这就是为什么我问a.o.)这个问题.除了我的问题,请确保你阅读了被接受的答案,以获得正确的代码,并避免我犯的相同错误.