Ich benutze Büroklammer mit AWS in meiner Schiene App. Ich habe ein Modell, das das Bild enthält:Büroklammer löscht keine Bilder von S3 auf destroy
class PaperclipFile < ActiveRecord::Base
before_validation :parse_image
belongs_to :attachment
attr_accessor :base64_attachment
has_attached_file :image, preserve_files: false
validates_attachment :image, presence: true
do_not_validate_attachment_file_type :image
private
def parse_image
return unless base64_attachment
image = Paperclip.io_adapters.for(base64_attachment)
image.original_filename = "img_#{SecureRandom.urlsafe_base64}.jpg"
end
end
Grundsätzlich kann ich ein Bild in base64 passieren und es verarbeitet und speichert sie korrekt auf S3. Das Problem ist, wenn ich, dass .Destroy do
p = PaperclipFile.first
p.destroy
Nachdem der Datensatz aus der DB ist weg, aber die Datei wird nicht aus dem Eimer zerstört. Ich bekomme keine Fehler, daher sieht es nicht so aus, als würde es überhaupt versuchen.
Die Ausgabe lautet:
2.4.0 :005 > PaperclipFile.first.destroy
PaperclipFile Load (0.8ms) SELECT "paperclip_files".* FROM "paperclip_files" ORDER BY "paperclip_files"."id" ASC LIMIT $1 [["LIMIT", 1]]
(0.2ms) BEGIN
SQL (0.7ms) DELETE FROM "paperclip_files" WHERE "paperclip_files"."id" = $1 [["id", 2]]
(4.1ms) COMMIT
=> #<PaperclipFile id: 2, attachment_id: 2, created_at: "2017-04-03 04:02:11", updated_at: "2017-04-03 04:02:11", image_file_name: nil, image_content_type: nil, image_file_size: nil, image_updated_at: nil>
2.4.0 :006 >
Für die Aufzeichnung ich Rubin verwenden 2.4, Rails 5.0.2 und wie für die Edelsteine sie aussehen:
# Attachments
gem 'paperclip'
gem 'aws-sdk', '~> 2.3'
Dank!
clear ist keine Funktion von p. Vielleicht meintest du p.image.clear/p.image.destroy? Ich habe auch versucht, die ohne Glück – mrk
versuchen Sie einfach, das Objekt zu speichern, nachdem Sie p.image.destroy/p.image.clear –
Danke für Ihre Anregungen, aber bis jetzt keine Freude – mrk