状況:
ブラックリストに登録された電子メールアドレスのリストによって検証する必要があるユーザーモデルを取得しました。ブラックリストに登録された電子メールアドレスは、ブラックリストと呼ばれる追加のモデルにあります。
models / user.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]ブラックリストが常にnilであるということです。たぶん私のロジックに何か問題がありますか?言い換えれば、とにかく宿泊施設なしで別のモデル内のモデルにアクセスすることは可能ですか?
事前にご協力いただきありがとうございます。既存の言語の誤りについてお詫び申し上げます。私は英語を母国語とはしていません:)
解決! アイテムのどの属性を使用するかを定義できませんでした...
errors.add(:email, 'is blacklisted') if self.email.match(item.name)
時々私の脳は私の好きな方法が好きではありません...