ruby-on-rails Rails 4- validates_format_of:user_name.downcase不工作

iaqfqrcu  于 2023-03-24  发布在  Ruby
关注(0)|答案(2)|浏览(89)

因此,在一个模型中,我验证新用户,并尝试在保存用户名之前将其小写。
我以为这会奏效:

validates_format_of :user_name.downcase,:with => /\A[0-9a-zA-Z]*\z/

不幸的是,它没有。
你知道怎么做吗?
谢谢

igsr9ssn

igsr9ssn1#

我会选一个定制者

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/
0ejtzxu1

0ejtzxu12#

您可以使用validates_format_ofbefore_save回调来完成这两个任务
首先验证user_name的格式,然后在before_save回调中将其小写。

validates_format_of :user_name, with: /\A[0-9a-zA-Z]+\z/
before_save :downcase_user_name

private

def downcase_user_name
  self.user_name = user_name.downcase
end

相关问题