我尝试过rails guide并搜索了很多,但可以找到答案。 我正在尝试使用脚手架生成器在轨道4中生成秘密的支柱脚手架
场景是:用户可以创建秘密帖子,他们将获得带有秘密令牌的链接 将来它可以作为验证字符串
rails g scaffold secret title:string content:text token:string
我想在所有“secret_posts”路由中附加该标记值
例如:
: secret/1/sadkljaldjlak
: secret/1/edit/sasadadallkha
我想将该令牌用作验证的唯一代码。 任何帮助表示赞赏
答案 0 :(得分:0)
您应该可以通过单独指定路径来完成此操作:
get 'secret/:id/:token' => 'secret#show' #or whatever action
在该控制器操作中,您可以确保令牌与ID匹配。
但您应该知道这不安全,该网址将存储在浏览器历史记录中,并且如果该网页包含外部链接,其他网站也会显示该网址
答案 1 :(得分:0)
首先,创建向机会令牌的迁移:字符串到令牌:文本,然后使用SecureRamdom.urlsafe_base64生成令牌,在您的模型上使用此代码:
def secret_token
if self.new_record?
self.token = SecureRandom.urlsafe_base64
end
end
之后,你可以创建一个这样的路线:
get 'secret/:edit_hash/edit', to: 'secret#edit', as: :secret_offer
patch 'secret/:edit_hash', to: 'secret#update'
put 'secret/:edit_hash', to: 'secret#update'
并在您的控制器上:
def edit
@secret = Secret.find_by!(edit_hash: params[:edit_hash])
your code..
end
def create
@secret = Secret.find_by!(edit_hash: params[:edit_hash])
your code..
end
希望这个帮助