2013-07-20 65 views
1

在我正在構建的Rails應用程序中,我有一個名爲buckets的資源。在Rails 3中構建祕密鏈接

我現在的任務是製作這些桶的祕密聯繫,例如 -

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_bucket_path)保留的資源ID的保密性。

最好的結構是什麼?

回答

0

創建存儲桶時,可以將存儲桶模型屬性(或其中的一部分,顯然不僅僅是id)散列到SHA256中並將其與模型一起保存。 然後在您的模型中,剷鬥模型覆蓋to_param方法。

def to_param 
    self.hashed 
end 

然後你的路由將使用你的散列屬性,而不是默認的id。

+0

值得注意的是,由於您存儲的是散列,因此您將其散列的值是無關緊要的。因此,您應該使用隨機數生成器而不是(可猜測的)模型屬性。 – phillmv