Я впервые пробую ActiveStorage и задаюсь вопросом, каково соглашение для кода контроллера, используемого для очистки некоторых или всех прикрепленных файлов ресурса?
Два решения, которые я вижу и ненавижу:
destroy.Как Rails обрабатывает изменения, внесенные во вложения ActiveStorage ресурса?





Я бы выбрал первое решение, которое вы рассмотрели:
A designated controller just for managing attachments (which would omit any kind of resource specific callbacks
Это примерно то, что мы делаем в Basecamp. Вот демонстрация:
# app/models/event.rb
class Event < ApplicationRecord
belongs_to :user
has_many_attached :highlights
end
# app/controllers/events/highlights_controller.rb
class Events::HighlightsController < ApplicationController
before_action :set_event, :set_highlight
def destroy
@highlight.purge_later
redirect_to @event
end
private
def set_event
@event = Current.user.events.find(params[:event_id])
end
def set_highlight
@highlight = @event.highlights.find(params[:id])
end
end
# config/routes.rb
Rails.application.routes.draw do
resources :events do
resources :highlights, controller: "events/highlights"
end
end
<%# app/views/events/show.html.erb %>
<% @event.highlights.each do |highlight| %>
<%= link_to image_tag(highlight.representation(resize: "200x200>")), highlight %><br>
<%= link_to "Delete this highlight", event_highlight_path(@event, highlight), method: :delete %>
<% end %>