微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ruby-on-rails – Rails 4 to_json产生意外的异常nil不是一个符号

我正在将Rails 3应用程序升级到Rails 4.在Rails 3中,包含ActiveRecord对象数组的哈希的json序列化工作正常;现在在Rails 4它有不可预知的结果.

这是一个使用TypeError异常失败的示例对象:nil不是Rails 4上的一个符号

{1230 =>
  [
    #<QuestionAnswerResponse response_id: 127,response_set_id: 6,response_group: nil,question_data_export_identifier: "is_co_pi_involved",answer: "No",question_id: 1230,answer_id: 2077,response: "">,#<QuestionAnswerResponse response_id: 131,response: "">
  ]
}

现在如果我采取另一个类似的对象;哈希包含一个ActiveRecord对象数组,并运行to_json它在这一个

{1234 =>
  [
    #<Response id: 1,response_set_id: 2,question_id: 4,answer_id: 2,datetime_value: nil,integer_value: nil,float_value: nil,unit: nil,text_value: nil,string_value: nil,response_other: nil,created_at: "2014-05-30 21:17:23",updated_at: "2014-05-30 21:17:23",survey_section_id: 1,api_id: "f44b22ba-a93b-477f-8a7f-c5b4566338f0",attach_file_name: nil,attach_content_type: nil,attach_file_size: nil,attach_updated_at: nil>,#<Response id: 2,question_id: 10,answer_id: 10,text_value: "test",api_id: "e7fa8aa2-6e47-4f88-8802-949fdc902a2e",attach_updated_at: nil>
  ]
}

解决方法

支持我的QuestionAnswerResponse模型的视图没有id列,我没有在模型中设置主键.在我使用这个模型的能力我不需要一个主键;这是一个只读视图,用于更直接地访问一些复杂的键/值配对,而不是通过更复杂的逻辑.

在Rails 3中这样运行正常在Rails 4中,当您访问没有主键的模型时,最终会出现一个在您的哈希中看起来像这样的属性nil =>零

问题实际上是在ActiveRecord级别,但实际上并没有造成问题,直到我尝试执行json序列化;在这个时间点尝试调用nil.to_sym引发异常.

这对ActiveRecord来说似乎是一个错误;但是现在我已经通过在我的模型上手动设置一个主键了解了它.

原文地址:https://www.jb51.cc/ruby/272686.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐