2014-01-26 103 views
0

您好,我正在构建一个ruby on rails应用程序。我想共享一个附件,最多只有一个小时,之后必须停用该特定的链接。 是否可以做到这一点,而不需要做任何CRON工作Tempory文件共享

我的要求是用户可以上传附件,他们可以共享加密的URL。该URL的最大有效期将是一个小时。

我想知道是否有可能通过不创建任何CRON作业?如果是,请帮助我?

+0

要么:为URL(有效的路径参数)创建一个id,并存储与任何模型控制下载的超时值。或者:在加密(或散列)数据中包含超时信息。您应该解释一些关于您目前如何提供下载的更多(使用简化代码),以获得最适合您的答案。 –

+0

Thanks @NeilSlater这是一个简单的载波文件上传,它存储在我的本地应用程序文件夹中。我只是使用** bit.ly **加密该网址,并且这是[http://bit.ly/1ep4FzI]加密的url.my要求非常简单,我不想存储url或CRON作业以使附件无效。只有当用户不应该访问URL以下载文档时,用户上传文档时,上述加密的URL才需要有效一小时。 – ferdy

回答

1

您可以使用应用程序控制器助手before_filter

class ApplicationController < ActionController::Base 
    before_filter :check_expire 

    def check_expire 
    UrlLink.active.where('expire_time <= ?' Time.now).find_each do |url| 
     url.deactive! 
    end if UrlLink.active.any? 
    end 
end 

模型

class UrlLink < AB 
    scope :active, -> { where(active: true) } 

    def deactive! 
    update(active: false) 
    end 
end 

但这项工作缓慢的,如果你有大的分贝。

+0

谢谢@Monk_Code。它是一个文件路径。它将作为附件从公用文件夹中作为服务器。我可以为此添加before_filter吗? – ferdy