Rails: создайте openstruct из json, отправленного через ajax - PullRequest
1 голос
/ 02 февраля 2012

У меня есть этот объект json (который я на самом деле не знаю, что внутри), и я хочу сохранить его в модели рельсов с атрибутом openstruct

так, например, с помощью jquery я отправляю этот json на хороший URL:

    Data = A_JSON_OBJECT_LIKE_CSV;
    myJSONData =  {"OpenStructObject":{"content":' + Data + '}}
    $.ajax({
      type: "POST",
      url: 'http://localhost:3000/surveys/',
      dataType: 'json',
      data: myJSONData,
      success: alert('wow : success !')
    });                

Так как должна быть написана эта модель опроса? Может быть, что-то вроде этого:

class Survey < ActiveRecord::Base
  serialize :content, OpenStruct

  def initialize(idunno)
    @content = watever;
  end
end

Я действительно не знаю, за исключением того, что это должно быть возможно!

1 Ответ

1 голос
/ 02 февраля 2012

Зачем вам это нужно конвертировать в OpenStruct и сохранить как yaml в БД. Вместо этого JSON, преобразованный в хеш, сохраненный, поскольку yaml делает то же самое без дополнительных затрат на открытую структуру.

============================ ОБНОВЛЕНО [START]

у вас уже есть решение в вашем коде. посмотрите на это

class Survey < ActiveRecord::Base
  serialize :content, Hash

end

Здесь вы сериализуете контент. право!! Таким образом, он автоматически преобразует назначенный хэш в yaml перед сохранением. Итак, вот какое-то задание

survey = Survey.new({:content => {:first => "any hash"}})
survey.save!

Теперь, когда вы снова получите доступ к нему

survey.content
#=> {:first => "any hash"}

просто все как есть. Вам не нужно беспокоиться о преобразовании yaml и обратно, Rails позаботится об этом.

============================ ОБНОВЛЕНО [END]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...