我应该用什么方法来实现这个?是否有任何宝石可以轻松开箱即用?任何设计建议和智慧将不胜感激.谢谢!
解决方法 您的杰作模型上可以有一个名为public的布尔值.如果图片是公开的,那么任何人都可以访问它.但是,如果它不是公开的,那么使用您的返回URL将不会执行任何 *** 作.您的公共网址可以通过哈希创建.我通常喜欢在创建模型时创建哈希标记.
rails g migration add_hash_token_to_masterpIEces hash_token
在您的模型中,您可以使用before_create方法来调用私有方法,taht将使用随机十六进制更新您的hash_token.
before_create :generate_hash_tokenprivate def generate_hash_token begin self.hash_token = SecureRandom.hex end while self.class.exists?(hash_token: hash_token) end
然后在您的路线文件中,您可以执行以下 *** 作
匹配“/ public /:hash_token”=> “杰作#public_masterpIEce”,如:“public”
然后在您的控制器中,您可以拥有哈希令牌的查找方法,并具有相应的视图以显示公共用户的图像.注意_and_public只发现那些公开的.即使散列有效,如果杰作不公开,它也不会返回记录.
def public_masterpIEce @masterpIEce = MasterpIEce.find_by_hash_token_and_public(params[:hash_token],true) ...end
然后在您的杰作视图中,您可以拥有一个名为public_masterpIEce.HTML.erb的文件,该文件是尚未拥有授权帐户但仍可以查看图片的用户的特定呈现.如果您使用像cancan这样的宝石进行授权,则需要确保允许public_masterpIEce *** 作.
总结以上是内存溢出为你收集整理的ruby-on-rails – 如何在rails应用程序中处理共享唯一URL?全部内容,希望文章能够帮你解决ruby-on-rails – 如何在rails应用程序中处理共享唯一URL?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)