2016-05-29 27 views
1

我有一個應用程序,資源通過正常的ID保存在數據庫中。但是,爲了防止數據庫枚舉,在路徑和鏈接中向用戶顯示的ID與UUID相似。 (舉個例子:http://example.com/payment/yta6Bo34sEcto + Phoenix:如何使用不同於以下鍵的資源路徑:id?

要在鳳凰城+外生正常的,基於身份的鏈接,一個可以這樣做:

link to: payment_path(@conn, :show, payment)

然而,這種隱式使用%Payment{}結構的.id字段在這裏通過。

當使用UUID,一個已經做

link to: payment_path(@conn, :show, payment.uuid)

,或者在我的應用程序,其中的UUID被保存在數據庫中bigints,但顯示爲base36串的情況下:

link to: payment_path(@conn, :show, UUID.encode(payment.uuid))

有沒有辦法簡化這個過程?例如,是否有可以爲傳遞給Phoenix路徑助手的結構實現的協議,因此他們將自動使用自定義過程來生成顯示/編輯/更新/刪除路徑?

回答