情况:
我有一个用户模型,需要通过列入黑名单的电子邮件地址列表进行验证。列入黑名单的电子邮件地址位于名为blacklist的额外模型中
模型/用户.rb:
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
模型/黑名单.rb
class Blacklist < ActiveRecord::Base
attr_accessible :name, :blacklist_type
#some validation code for blacklist items ...
end
黑名单条目示例
#: name, blacklist_type
#1: 'demo-mail.com', 'E-Mail'
#2: 'test123.com', 'E-Mail'
黑名单模型将来也将用于禁止特定用户名!
问题:
我的问题是[at]blacklist总是nil。也许我的逻辑有问题?换句话说:是否有可能在没有关联的情况下访问另一个模型中的模型?
感谢您提前提供的帮助,并对现有的语言错误表示歉意。我不是以英语为母语的人:)
解决方案! 我错过了定义应该使用项目的哪个属性...
errors.add(:email, 'is blacklisted') if self.email.match(item.name)
有时我的大脑不喜欢我喜欢的方式...