その特定のドメインのブラックリストにあるかどうかを確認しようとしているemail_addressオブジェクトがあります。私はそれをこのように呼んでいます:
elsif @email.blacklisted?(@domain.id)
do something ...
end
エラーが発生しました:
NoMethodError - undefined method `by_email' for ActiveModel::MassAssignmentSecurity::BlackList:Class:
また、作成したブラックリストスコープを使用する代わりに、.find_all_by_idを実行してみました。ただし、同じエラー。これは私を夢中にさせています、どんなアイデアも素晴らしいでしょう!
EmailAddressクラス
class EmailAddress < ActiveRecord::Base
attr_accessible :email, :global_blacklist
has_many :transactions
has_many :black_lists
has_many :opt_outs
validates :email, :presence => true,
:uniqueness => true
validates :global_blacklist, :acceptance => true
def blacklisted?(domain_id)
black_lists = BlackList.by_email(self.id).by_domain(domain_id)
black_lists.count > 0
end
end
ブラックリストクラス
class BlackList < ActiveRecord::Base
attr_accessible :domain_id, :email_address_id, :date_added
belongs_to :domain
belongs_to :email_address
validates :domain_id, :presence => true
validates :email_address_id, :presence => true
validates :date_added, :presence => true
GLOBAL_BLACK_LIST_THRESHOLD = 2
scope :by_domain, ->(domain_id) { where('domain_id = ?', domain_id) }
scope :by_email, ->(email_id) { where('email_address_id = ?', email_id) }
end