在我的本地环境中使用逗号 gem并导出 CSV 文件非常好。还在我们在 AWS 实例上运行的暂存环境中工作。
只有在 Heroku 上失败了。
Heroku 说:
2013-08-21T21:55:34.875724+00:00 app[web.1]: NoMethodError (undefined method `klass' for nil:NilClass):
2013-08-21T21:55:34.875724+00:00 app[web.1]: app/models/job.rb:220:in `block in <class:Job>'
2013-08-21T21:55:34.875724+00:00 app[web.1]: app/controllers/jobs_controller.rb:25:in `block (2 levels) in index'
2013-08-21T21:55:34.875724+00:00 app[web.1]: app/controllers/jobs_controller.rb:18:in `index'
我的 Job 模型中的第 220 行是:
Comma do
...
customer :first_name
...
end
job.rb 包括以下行:
belongs_to :customer
customer.rb 有:
has_many :jobs
正如我所提到的,这整件事在我的本地盒子上运行良好 - 我单击导出按钮并弹出所有工作,每个客户都在相应的列中。
无论出于何种原因,它只会在 Heroku 上失败。
我在 Heroku 上使用 Ruby 2.0.0-p0,根据文档,逗号 gem 仅验证到 1.9.2 - 但是 - 我在登台服务器和本地环境中使用 Ruby 2.0.0-p0,并且,再次,它正在工作。
真正让我失望的是'klass',因为我的代码中没有任何地方。我已经阅读了有关相同错误及其解决方案的其他线程,但我没有嵌套模型表单和喜欢。
Heroku & Ruby 2.0 和关联有问题吗?我两边都有has_many和belongs_to,但似乎仍然误解了关联......
更新
从框架跟踪:
comma (3.1.0) lib/comma/extractors.rb:72:in `get_association_class' <====
comma (3.1.0) lib/comma/extractors.rb:55:in `block in method_missing'
comma (3.1.0) lib/comma/extractors.rb:48:in `each'
comma (3.1.0) lib/comma/extractors.rb:48:in `method_missing'
comma (3.1.0) lib/comma/extractors.rb:15:in `instance_eval'
comma (3.1.0) lib/comma/extractors.rb:15:in `results'