ruby-on-rails – 如何在rails应用程序中处理共享唯一URL?
我正在创建一个Web应用程序来学习
Ruby on rails.该应用程序允许用户登录并在画布上绘图.我希望用户能够通过特定于用户艺术作品编号的唯一生成的URL来共享杰作.艺术作品的创建者也应该选择密码保护URL.我不需要在Facebook或LinkedIn,Twitter或类似的东西上共享URL.只需要一个可以通过电子邮件发送或发送短信等的简单URL.
我应该用什么方法来实现这个?是否有任何宝石可以轻松开箱即用?任何设计建议和智慧将不胜感激.谢谢! 解决方法
您的杰作模型上可以有一个名为public的布尔值.如果图片是公开的,那么任何人都可以访问它.但是,如果它不是公开的,那么使用您的返回URL将不会执行任何操作.
您的公共网址可以通过哈希创建.我通常喜欢在创建模型时创建哈希标记. rails g migration add_hash_token_to_masterpieces hash_token 在您的模型中,您可以使用before_create方法来调用私有方法,taht将使用随机十六进制更新您的hash_token. before_create :generate_hash_token private 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操作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |