因此,在模型中,我会验证新用户并尝试在保存用户名之前将其缩小。
我认为这样可行:
validates_format_of :user_name.downcase,:with => /\A[0-9a-zA-Z]*\z/
不幸的是,它没有。
知道怎么做吗?
由于
答案 0 :(得分:1)
我会选择自定义设置器
def user_name=(value)
self[:user_name] = value.downcase
end
通过这种方式,您可以确保在为其分配任何字符串时,user_name中始终会有一个下载字符串
你的代码有什么问题:user_name.downcase实际上是字符串“user_name”(user_name符号,to_s,downcase),你的正则表达式也匹配大写字母
将其更改为:
validates_format_of :user_name,:with => /\A[0-9a-z]*\z/
答案 1 :(得分:0)
您可以使用validates_format_of
和before_save
回调
首先验证user_name
的格式,然后在before_save
回调中将其缩小。
validates_format_of :user_name, with: /\A[0-9a-zA-Z]+\z/
before_save :downcase_name
private
def downcase_user_name
self.user_name = user_name.downcase
end