Как запросить таблицу UPDATE из ruby ​​в приложении rails? - PullRequest
0 голосов
/ 28 ноября 2018

Во время тестирования я использую Document.last.files.first.purge из консоли с направляющими c, первый файл удаляется, но также и rails c автоматически вызывает запрос UPDATE для документа.Но когда я вызываю purge для файла из моего приложения, я вижу, что на сервере rails запускается только запрос DELETE.(Это вызывает кучу проблем, например, сервер пытается загрузить несуществующие BLOB-объекты, поэтому я предполагаю, что очень важно обновить таблицу после того, как в нее были внесены изменения.) У меня вопрос: как мне повторить этот запрос UPDATE из ruby?Спасибо!

Expected result from rails server doc= Document.last

Real result from rails server

Код для удаления файла:

Контроллер (documents_controller.rb)

def delete_file_attachment
    @file = ActiveStorage::Blob.find_signed(params[:id]).purge
end

Представление (_form.html.erb)

<div class="files">
    <% @document.files.each do |file| %>
      <%= link_to file.filename, delete_file_attachment_document_url(file.signed_id), method: :delete, data: { confirm: 'Are you sure?' }%>
    <% end %>
  </div>

Модель (document.rb)

class Document < ApplicationRecord
  has_many_attached :files
end

Ответы [ 2 ]

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

Если вы хотите удалить вложение, вы должны сделать что-то вроде этого:

_form.html.erb

<div class="files">
    <% @document.files.each do |file| %>
      <%= link_to file.filename, delete_file_attachment_document_url(file), method: :delete, data: { confirm: 'Are you sure?' }%>
    <% end %>
 </div>

documents_controller.rb

@file = ActiveStorage::Attachment.find(params[:id])
@file.purge

Надеюсь, это решит вашу проблему.

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

Попробуйте использовать предложение where в документе с изменяемой формой и использовать update_all () для запуска SQL-запроса для этого конкретного события.Посмотрите, работает ли что-то подобное с вашей базой данных ->

Document.where(conditions).limit(1).update_all(changes) # => 1

Вот некоторая документация по update_all () в отношениях Active Record https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-update_all

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