因此,在一个模型中,我验证新用户,并尝试在保存用户名之前将其小写。我以为这会奏效:
validates_format_of :user_name.downcase,:with => /\A[0-9a-zA-Z]*\z/
不幸的是,它没有。你知道怎么做吗?谢谢
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/
0ejtzxu12#
您可以使用validates_format_of和before_save回调来完成这两个任务首先验证user_name的格式,然后在before_save回调中将其小写。
validates_format_of
before_save
user_name
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
2条答案
按热度按时间igsr9ssn1#
我会选一个定制者
这样,您就可以确保在为user_name分配任何字符串时,该字符串始终为小写字符串
你的代码中的错误是:user_name.downcase实际上是字符串“user_name”(user_name符号,to_s,downcase),而且你的正则表达式匹配大写字母
将其更改为:
0ejtzxu12#
您可以使用
validates_format_of
和before_save
回调来完成这两个任务首先验证
user_name
的格式,然后在before_save
回调中将其小写。