Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 在Rails 3中构造秘密链接_Ruby On Rails 3_Url_Routing_Structure_Private - Fatal编程技术网

Ruby on rails 3 在Rails 3中构造秘密链接

Ruby on rails 3 在Rails 3中构造秘密链接,ruby-on-rails-3,url,routing,structure,private,Ruby On Rails 3,Url,Routing,Structure,Private,在我正在构建的rails应用程序中,我有一个名为bucket的资源 例如,我现在的任务是为这些桶创建秘密链接- http://myapp.dev/x/:secret_unique_hash_for_bucket_one/ -哪个映射到- http://myapp.dev/buckets/1 -而不公开实际的ID 我还需要此秘密链接上的所有操作和子资源才能工作,例如- http://myapp.dev/x/:secret_unique_hash_for_bucket_one/edit http

在我正在构建的rails应用程序中,我有一个名为
bucket
的资源

例如,我现在的任务是为这些桶创建秘密链接-

http://myapp.dev/x/:secret_unique_hash_for_bucket_one/
-哪个映射到-

http://myapp.dev/buckets/1
-而不公开实际的ID

我还需要此秘密链接上的所有操作和子资源才能工作,例如-

http://myapp.dev/x/:secret_unique_hash_for_bucket_one/edit
http://myapp.dev/x/:secret_unique_hash_for_bucket_one/ideas/1
最后,我还需要url帮助程序(
edit\u bucket\u path
)来保持资源ID的机密性


一个最佳的结构是什么?

当创建一个bucket时,您可以将bucket模型属性(或者只是其中的一部分,显然不仅仅是id)散列到SHA256中,并将其与模型一起保存。 然后在模型中,桶模型覆盖
to_param
方法

def to_param
  self.hashed
end

然后,您的路由将使用哈希属性,而不是默认的id。

值得注意的是,由于您正在存储哈希,因此哈希值无关紧要。因此,您应该使用随机数生成器,而不是(可猜测的)模型属性。