gpt4 book ai didi

ruby-on-rails - Rails - validates_each 只允许某些电子邮件?

转载 作者:行者123 更新时间:2023-12-04 06:18:45 24 4
gpt4 key购买 nike

对于我的 rails3、devise、用户模型(姓名、电子邮件等...),我想防止不良域名在网站上注册。

我的想法是我有一个列入黑名单的域列表(badplace.com、hotmail.com)...当要保存新的用户记录时,我会检查电子邮件,如果它有一个错误的域,我添加了一个错误。

那么在 Rails 中巧妙地实现它的正确方法是什么......

这是我一直在玩的东西:

在用户模型中

protected
validates_each :email, :on => :create do |record, attr, value|
domain = email.split("@").last
record.errors.add attr, "That's a BAD EMAIL." unless value && !value.contains(domain)
end

你怎么看?

最佳答案

您可以使用 validates_format_of 和正则表达式更轻松地完成此操作:

class User < ActiveRecord::Base
validates_format_of :email, :without => /badplace\.com|hotmail\.com/, :message => "That's a BAD EMAIL."
end

编辑:

对于很多地址,你可以这样做:

INVALID_EMAILS = %w(badplace.com hotmail.com)
validates_format_of :email, :without => /#{INVALID_EMAILS.map{|a| Regexp.quote(a)}.join('|')}/, :message => "That's a BAD EMAIL."

关于ruby-on-rails - Rails - validates_each 只允许某些电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4753500/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com