2017-01-02 62 views
0

我們如何獲得活動記錄來創建更多不僅僅是自然數(1,2,3 ...)的複雜ID。我不確定我是否應該使用數據庫ID來識別對象,但是現在,在生產中讓他們這樣做會非常不安全。更強大的活動記錄ID

+1

也許像'slug'會有幫助嗎?您可以繼續使用'id'作爲主鍵,但對於其他所有內容使用另一列。所以,你們所要做的只是產生一個獨特的'slug'來識別這個對象,並停止使用'id'來公開所有的東西。 – amree

+0

@amree所以一個slu basically基本上映射到一個ID號碼?如果你不介意,你能提供一個例子嗎? – Carpetfizz

+1

你是什麼意思「相當不安全」? –

回答

1

讓我們只是說你想要使用一個名爲slug的列作爲名爲Post的對象。

  • 該表
  • 創建Post模型before_create方法,將保存記錄之前,生成唯一slug值創建slug列。也許做一些檢查,以確保它是唯一的
  • 替換任何公開使用Post.find_by(slug: id)而不是Post.find(id)
  • 確保任何網址生成將使用這樣的:post_path(id: post.slug),這樣它就不會把id的URL。