首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails自定义电子邮件验证程序@ Blacklist

Rails自定义电子邮件验证程序@ Blacklist
EN

Stack Overflow用户
提问于 2012-09-28 11:17:43
回答 3查看 1.2K关注 0票数 1

形势:

我得到了一个用户模型,它需要通过黑名单上的电子邮件地址列表来验证。黑名单上的电子邮件地址位于另一个称为黑名单的模型中。

型号/user.rb:

代码语言:javascript
复制
    class User < ActiveRecord::Base
            validate :email_is_not_blacklisted

            def email_is_not_blacklisted
                    @blacklist = Blacklist.where(:blacklist_type => "E-Mail")

                    @blacklist.each do |item|
                            errors.add(:email, 'is blacklisted') if self.email.match(item)
                    end
            end
    end

模型/黑名单.

代码语言:javascript
复制
    class Blacklist < ActiveRecord::Base
            attr_accessible :name, :blacklist_type

            #some validation code for blacklist items ...
    end

黑名单条目示例

代码语言:javascript
复制
    #:        name,            blacklist_type
    #1:       'demo-mail.com', 'E-Mail'
    #2:       'test123.com',   'E-Mail'

黑名单模式也将用于禁止特定的用户名在未来!

问题:

我的问题是黑名单总是零。也许我的逻辑有什么问题?换句话说:是否有可能访问另一个模型中的模型而不进行任何协商?

感谢您的帮助,并道歉现有的语言错误。我不是以英语为母语的人

解决方案!我错过了定义项目的哪个属性应该使用.

代码语言:javascript
复制
    errors.add(:email, 'is blacklisted') if self.email.match(item.name)

有时候我的大脑不喜欢我喜欢的方式..。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-28 12:54:01

我建议你用这个

代码语言:javascript
复制
class User < ActiveRecord::Base
  validate :email_is_not_blacklisted

  def email_is_not_blacklisted
    if Blacklist.find_by_blacklist_type_and_name("E-Mail",self.email)
       errors.add(:email, 'is blacklsited') 
    end
  end
end

这会比以前的更快

票数 3
EN

Stack Overflow用户

发布于 2012-09-28 11:37:51

案件敏感性。您正在搜索黑名单类型=“电子邮件”,您的示例数据是“电子邮件”。

票数 0
EN

Stack Overflow用户

发布于 2012-09-28 12:06:52

若要详细说明我的意见,请尝试如下:

代码语言:javascript
复制
class User < ActiveRecord::Base
  validate :email_is_not_blacklisted

  def email_is_not_blacklisted
    Blacklist.find_all_by_blacklist_type("E-Mail").each do |item|
      errors.add(:email, 'is blacklsited') if.self.email.match(item)
    end
  end
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12638999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档