我有一个RubyOnRails应用程序,托管在Amazon EC2服务器上(带有弹性负载均衡器),该服务器与托管在Amazon RDS上的数据库进行通信。
我很难修复应用程序偶尔返回的错误500:
NoMethodError (undefined method `fields' for nil:NilClass):
activerecord (3.2.8) lib/active_record/connection_adapters/mysql2_adapter.rb:216:in `exec_query'
如何修复此错误?
很可能您正试图在返回nil的活动记录对象上调用方法。
例如,如果您有一个名为page的模型,并且正试图获取该页面的字段,即page.fund(params[:id]).fields,但是在DB中没有具有该id的页面的记录,因此您正试图调用其上不存在的页面模型实例的方法字段。
尝试将方法调用包装在内部,并使用if/else语句仅在page(或您尝试调用它的任何类)不为零时调用方法字段。