加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何在rails应用程序中处理共享唯一URL?

发布时间:2020-12-17 02:20:30 所属栏目:百科 来源:网络整理
导读:我正在创建一个Web应用程序来学习 Ruby on rails.该应用程序允许用户登录并在画布上绘图.我希望用户能够通过特定于用户艺术作品编号的唯一生成的URL来共享杰作.艺术作品的创建者也应该选择密码保护URL.我不需要在Facebook或LinkedIn,Twitter或类似的东西上共
我正在创建一个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操作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读