Rails активное хранилище, обновите образ, когда has-many_attached - PullRequest
0 голосов
/ 27 ноября 2018

Я использую rais api для внутреннего интерфейса и реагирую на внешний интерфейс.

Я использую активное хранилище rails для обработки изображений.

В моем приложении rails у меня есть модальные имена Post.

class Post < ApplicationRecord
  has_many_attached :pictures

  def picture_url
    if self.pictures.attached?
      self.pictures.map do |picture|
        Rails.application.routes.url_helpers.rails_blob_path(picture, 
        only_path: true)
      end
    else
      nil
    end
  end
end

Таким образом, согласно вышеприведенному * у post может быть много изображений.

Теперь я столкнулся с проблемой при обновлении фотографий поста.

case 1: Предположим, яесть пост, скажем, 'p1', у p1 теперь 3 изображения.Теперь, если я хотел бы удалить одно изображение из p1 и добавить новое изображение вместо удаленного изображения.Как я справлюсь с этим в моем контроллере.

case 2: Я хочу сохранить только одно изображение из 3 изображений.Это означает, что я хочу удалить конкретные 2 изображения.

Мое update действие posts_controller.rb выглядит следующим образом:

  def update
    post = Post.find(params[:id])
    if post.update_attributes(message: params[:message], picture: 
       params[:picture])
      render_success(:ok, post, meta: { message: 'Post updated' })
    else
      render_error(422, post.errors, message: 'Failed to update post')
    end
  end

1 Ответ

0 голосов
/ 27 ноября 2018

https://matias.svbtle.com/rails-droplets-2-using-activestorage-for-has-many-attached-images-with-nested-forms-and-deletion-part-1

Это должно дать вам хорошую отправную точку.Я ценю, что я должен скопировать и вставить код оттуда, но вам необходимо выполнить это с самого начала.

Это означает, что если в обновлении есть какие-либо сведения о вложении, вы прежде всего удалите всетекущие вложения, а затем связать новые.

...