アプリケーションでは、サービスに公開ファイルURLをafter_create
コールバックで送信したかったのです。だから、コード(簡体字)、このように見えた:私の欲求不満にCarrierwaveはコールバックで実際の代わりにtmpファイルのパスを返します
class UserProfile < ApplicationRecord
mount_uploader :video, VideoUploader
after_create :send_url_to_service
private
# Just logs the URL
def send_url_to_service
Rails.logger.info video.url
end
end
は、アップロード後、send_url_to_service
コールバックは常にキャッシュされたファイルのパスをログに記録 - 代わり'uploads/user_profiles/video/1/file.mp4'
の'uploads/tmp/1473900000-123-0001-0123/file.mp4'
のようなものを。実際のファイルパスからURLを形成するメソッドを作成しようとしましたが、ファイルがまだ存在しなかったために機能しませんでした。
問題は、このような状況で最終的なファイルURLをどのように取得するかです。
P.Sこれは自己回答の質問です。私は自分の経験を共有したいと思います。