【发布时间】:2016-09-15 14:57:08
【问题描述】:
在一个应用程序中,我想通过 after_create 回调将公共文件 URL 发送到服务。因此,代码(简化)如下所示:
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/tmp/1473900000-123-0001-0123/file.mp4' 而不是'uploads/user_profiles/video/1/file.mp4'。我尝试编写一种方法来根据实际文件路径形成 URL,但由于文件尚不存在,因此无法正常工作。
那么,问题来了,在这种情况下,如何获取最终文件的 URL?
P. S. 请注意,这是一个自我回答的问题,我只是想分享我的经验。
【问题讨论】:
标签: ruby-on-rails rails-activerecord carrierwave