Некоторые значения равны нулю (которые были установлены) при разборе JSON в Ruby с использованием гема "json" - PullRequest
1 голос
/ 13 декабря 2011

когда я анализирую следующий json в моей консоли rails, то contact_person_id равен nil, даже если это был "c221c0f96670db455a174f1f30ffef1a". Я использую обычный "JSON" драгоценный камень. Я пытался использовать какую-то другую библиотеку, например, "yajl_ruby", но потом что-то другое сломалось. Кто-нибудь знает, почему это происходит?

ActiveSupport::JSON.decode '{"_id":"a042b081278fc535f50fd3f4ea695848","_rev":"7-435d6ef891d2d354a7233674c483194b","created_at":"2011-12-12T18:39:19Z","updated_at":"2011-12-12T22:34:35Z","contact_person_id":"c221c0f96670db455a174f1f30ffef1a","first_person_in_authority_id":null,"second_person_in_authority_id":null,"name":"","street":"","postcode":"","city":"","ruby_class":"Community"}'

=> #<Community _id: "a042b081278fc535f50fd3f4ea695848", _rev: "7-435d6ef891d2d354a7233674c483194b", created_at: Mon, 12 Dec 2011 18:39:19 UTC +00:00, updated_at: Mon, 12 Dec 2011 22:34:35 UTC +00:00, contact_person_id: nil, first_person_in_authority_id: nil, second_person_in_authority_id: nil, name: "", street: "", postcode: "", city: "", regional_chirch: nil, deanery: nil, chirch_district: nil, state: nil, urban_district: nil, county: nil, administrative_district: nil> 

1 Ответ

1 голос
/ 13 декабря 2011

Я не могу подтвердить эту проблему с помощью следующих версий:

ruby 1.8.7 (2009-06-12 patchlevel 174) [i686-darwin10.0.0]
activesupport (3.1.3)

Я использовал следующий фрагмент:

irb(main):003:0> ActiveSupport::JSON.decode '{"_id":"a042b081278fc535f50fd3f4ea695848","_rev":"7-435d6ef891d2d354a7233674c483194b","created_at":"2011-12-12T18:39:19Z","updated_at":"2011-12-12T22:34:35Z","contact_person_id":"c221c0f96670db455a174f1f30ffef1a","first_person_in_authority_id":null,"second_person_in_authority_id":null,"name":"","street":"","postcode":"","city":"","ruby_class":"Community"}'
=> {"city"=>"", "name"=>"", "created_at"=>"2011-12-12T18:39:19Z", "postcode"=>"", "first_person_in_authority_id"=>nil, "_rev"=>"7-435d6ef891d2d354a7233674c483194b", "updated_at"=>"2011-12-12T22:34:35Z", "_id"=>"a042b081278fc535f50fd3f4ea695848", "street"=>"", "contact_person_id"=>"c221c0f96670db455a174f1f30ffef1a", "second_person_in_authority_id"=>nil, "ruby_class"=>"Community"}
irb(main):004:0> _['contact_person_id']
=> "c221c0f96670db455a174f1f30ffef1a"

Я думаю, что проблема заключается в вашей кодовой базе, т.е. Communityмодель.Что нужно проверить:

  • Есть ли какой-нибудь after_initialization крюк?
  • Есть ли пользовательский contact_person_id= сеттер?
  • Является ли contact_person отношением, которое должносуществует с идентификатором c221c0f96670db455a174f1f30ffef1a?

Без дополнительной информации, я сожалею, что не могу дать вам лучший ответ.

...