例外:未定义的方法`blacklisted_keywords'

时间:2014-01-20 10:38:52

标签: ruby nomethoderror

我在类中有以下Ruby代码块:

def self.blacklisted_keywords
  %w(acquista acquistiamo acquisto acquistano compro compriamo comprano)
end

private

def item_valid?
  keywords = blacklisted_keywords
end

为什么我不能在没有得到的情况下调用blacklisted_keywords:“undefined method`blacklisted_keywords'”?我做错了什么?

2 个答案:

答案 0 :(得分:1)

因为blacklisted_keywords不是实例方法,而是类方法。keywords = blacklisted_keywords意味着ruby将其隐式地视为keywords = self.blacklisted_keywords。这会导致错误,因为它不是实例方法。将keywords = blacklisted_keywords替换为keywords = self.class.blacklisted_keywords

答案 1 :(得分:0)

根据提供的答案,如果您不需要改变它们,也许将关键字保持为常数是有意义的。

class Blah
  BLACKLISTED_KEYWORDS = %w(acquista acquistiamo acquisto acquistano compro compriamo comprano)

  private

  def item_valid?
    keywords = BLACKLISTED_KEYWORDS
  end
end