首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ActiveModel::MassAssignmentSecurity::BlackList:Class:的NoMethodError -未定义的方法`by_email

ActiveModel::MassAssignmentSecurity::BlackList:Class:的NoMethodError -未定义的方法`by_email
EN

Stack Overflow用户
提问于 2013-03-27 03:06:12
回答 1查看 285关注 0票数 0

我有一个email_address对象,我正在尝试检查它是否在该特定域的黑名单上。我这样叫它:

代码语言:javascript
复制
elsif @email.blacklisted?(@domain.id)
  do something ...
end

我得到了一个错误:

代码语言:javascript
复制
NoMethodError - undefined method `by_email' for ActiveModel::MassAssignmentSecurity::BlackList:Class:

我还尝试执行.find_all_by_id,而不是使用我创建的黑名单作用域。然而,同样的错误。这快把我逼疯了,任何想法都会令人惊叹!

EmailAddress类

代码语言:javascript
复制
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

BlackList类

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-29 03:53:57

以防其他人也有这个问题...

类名BlackList (大写L)似乎是一个ActiveModel类名。

我将类名改为Blacklist (一个单词而不是两个),问题就解决了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15645353

复制
相关文章

相似问题

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