簡體   English   中英

rails sha1哈希到對象的路由?

[英]rails sha1 hash for route to object?

我希望我的應用程序中的控制器不僅響應從其路由發送的對象的ID,而且實際上響應我使用Digest::SHA1.hexdigest生成的sha1哈希。

所以代替:

/client/invoice/1

我希望網址是這樣的:

/client/invoice/0beec7b5ea3f0fdbc95d0

在Rails中更改對象的URL通常涉及兩件事:

首先,更改相關的控制器動作,以使用可以按照您希望的方式工作的查找器。 在您的情況下,您可能希望在Invoice模型中編寫一個自定義查找器,例如:

def self.find_by_id_or_sha1(id)
  Invoice.find_by_id(id) || Invoice.find_by_sha1(id)
end

然后在您的控制器操作(顯示,編輯,更新,銷毀)中使用Invoice.find_by_id_or_sha1(params[:id]) )。

其次,更改生成的URL以遵循您的新設計(如果需要)。 因此,如果您希望link_to("Jan 1, 2010", @invoice)轉到/client/invoice/0beec7b5ea3f0fdbc95d0 ,請在Invoice模型中覆蓋默認的to_param方法。 例如:

def to_param
  sha1
end

(假定發票的SHA1哈希存儲在sha1屬性中。)

Invoice.first(:conditions=>["SHA(id) = ?",params[:id]])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM