programing

Rails/MariaDB 백엔드에서 직렬화된 데이터를 업데이트하려면 어떻게 해야 합니까?

skycolor 2023. 9. 4. 19:40
반응형

Rails/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

직렬화된 해시/J를 업데이트하려고 합니다.이런 SON:

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따라서 정확한 형식이어야 하며, DB에 문자열로 저장해도 업데이트 방법에서 수행하는 작업이 잘못되었다고 생각합니다.

언급URL : https://stackoverflow.com/questions/51391245/how-can-i-update-serialized-data-in-a-rails-mariadb-backend

반응형