如何在Rails / MariaDB后端中更新序列化的数据?

时间:2018-07-17 22:53:29

标签: ruby-on-rails serialization mariadb

目前,一旦满足某些条件,我就有一些QueuedImages变成GalleryImages

@image = GalleryImage.new(image_params.except(:tags))
@image.user = current_user

@queued = QueuedImage.new(user: current_user)
@queued.image = @image

在保存此方法之前,请将图像转换为JSON:

  def image_to_json    
    self.image_data = @image.to_json(include: :plain_images)
  end

我正在尝试像这样更新序列化的哈希/ JSON:

def update
    @queued = QueuedImage.find(params[:id])
    hash_as_string = @queued.image_data
    i_data = JSON.parse(hash_as_string.gsub('=>', ':'))
    i_data["title"] = params["title"]
    i_data["description"] = params["description"]
    i_data["folder_id"] = params["folder_id"]
    i_data["nsfw"] = params["nsfw"]
    i_data["tags"] = params["tags"]
    @queued.image_data = i_data

    if @queued.save
      render json: @queued, scope: current_user
    else
      render json: @queued.errors.as_json(full_messages: true), scope: current_user, status: :unprocessable_entity
    end
  end

哪个抛出了我的解析错误,我在做什么错了?

如何正确更新序列化的字符串?

问题是,当它从QueuedImage转换为GalleryImage时,另一种方法将获取该数据并对其求值并创建新的GalleryImage,因此它必须位于确切的格式,即使我将其另存为字符串,我相信在update方法中执行的操作是错误的。

0 个答案:

没有答案