我希望我的用户模型在保存之前清理一些输入。现在,一些简单的空格剥离就可以了。 因此,为了避免人们注册“哈利”,并假装是“哈利”,例如。
我认为在验证之前进行这种剥离是一个好主意,这样 validates _ 惟一性 _ of 可以避免意外的重复。
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)。我假设回调函数将传递这些值。
还有,这个脱衣舞真的是个好主意吗?或者我应该在空间上验证并告诉用户“ Harry”包含无效的空间(我想允许“ Harry Potter”,但不允许“ Harry s sPotter”)。
编辑: 正如注释中指出的那样,我的代码是错误的(这就是为什么我要问 a.o.)。请确保您除了阅读我的问题的正确代码,并避免同样的错误,我接受的答案。