我在我的Rails应用中有一个Book模型,它有许多属性(在book数据库表中称为列)。其中之一是“ranking”。
最近,我的应用程序开始抛出“NoMethodError:undefined method'include?' for nil:NilClass”的错误,代码如下:
最近,我的应用程序开始抛出“NoMethodError:undefined method'include?' for nil:NilClass”的错误,代码如下:
def some_method(book, another_arg)
return book.ranking unless book.ranking.blank?
...
end
然而,这一点并不一致。大部分时间访问 book.ranking 会成功——错误可能只有2-4% 的概率出现。如果我将代码更改为使用 book[:ranking]
或 book['ranking']
而不是 book.ranking
,那么它就可以100% 的工作。
有任何想法吗?
P.S. 这个问题时常会在其他模型和属性中出现……不仅仅是 Book 和 ranking 属性。
.nil?
而不是.blank?
相关的相同错误。它并不总是发生,同样的代码第二次运行或页面刷新似乎总是返回预期的行为。这种情况只发生在我将开发环境从SQLite3切换到MySQL以更接近生产环境时,所以我倾向于同意@mckeed的观点。 - Leo