Ho creato un plugin che carica un’immagine negli argomenti e salvo il percorso del file nei custom_fields. Tuttavia, Discourse elimina tutte le immagini caricate per gli argomenti, considerando le immagini orfane come immagini non collegate agli argomenti. Pertanto, qualcuno può guidarmi su come posso collegare le immagini caricate ai rispettivi argomenti?
Ho provato ad aggiornare l'image_upload_idma in qualche modo non riesco ad aggiornare il valore della colonna nella tabellatopic.
Mi dispiace, quella era solo una risposta parziale, impedirà solo che le immagini vengano orfane. Dovresti essere in grado di impostare topic.image_upload_id dal tuo codice, ma verrà sovrascritto quando l’HTML per un post verrà ricotto. Quindi dovresti anche agganciarti al codice di ricottura.
Puoi per favore guidarmi su come posso farlo? Se puoi condividere qualche esempio, perché non conosco molto Ruby, ma posso lavorare con JavaScript e sono nuovo anche a Discourse, quindi non so molto sulla personalizzazione di Discourse
def update_post_image
super # chiama l'originale
if @post.custom_fields[:your_field_name_upload_id]
upload_id = @post.custom_fields[:your_field_name_upload_id]
@post.update_column(:image_upload_id, upload_id) # post
if @post.is_first_post? # topic
@post.topic.update_column(:image_upload_id, upload_id)
end
end
end
Ha aggiornato image_upload_id per post e topic, ma le immagini vengono ancora eliminate. Ho utilizzato la funzione API register_upload_in_use.
Ho aggiunto il codice sottostante per verificare nei campi personalizzati del topic, dove topic_file_upload è il nome del campo. È il modo giusto per farlo?
if respond_to?(:register_upload_in_use)
register_upload_in_use do |upload|
TopicCustomField.where(
name: 'topic_file_upload',
value: [upload.url, upload.sha1]
).exists?
end
end
Cosa contiene TopicCustomField? Presumo che contenga l’ID di caricamento?
In tal caso, dovrebbe essere più simile a
if respond_to?(:register_upload_in_use)
register_upload_in_use do |upload|
TopicCustomField.where(
name: 'topic_file_upload',
value: upload.id
).exists?
end
end
Ha l’URL dell’immagine ma ho aggiunto un nuovo campo nei campi personalizzati per l’ID dell’immagine e ora sto controllando l’ID come hai menzionato nel codice. Credo che se avessi usato il codice sottostante, potrebbe funzionare?\n\n\nTopicCustomField.where(\n name: 'topic_file_upload',\n value: upload.url\n ).exists?\n