ruby-on-rails - 用于对象路由的 rails sha1 哈希?

标签 ruby-on-rails ruby

我希望我的应用程序中的 Controller 不仅响应从它的路由发送的对象的 ID,而且实际上是一个 sha1 哈希,我使用 Digest::SHA1.hexdigest 生成.

所以代替:

/client/invoice/1

我希望 url 是这样的:

/client/invoice/0beec7b5ea3f0fdbc95d0

最佳答案

在 Rails 中更改对象的 URL 通常涉及两件事:

首先,更改相关的 Controller 操作以使用按您希望的方式工作的查找器。在您的情况下,您可能想在 Invoice 模型中编写一个自定义查找器,例如:

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

然后在您的 Controller 操作(显示、编辑、更新、销毁)中使用 Invoice.find_by_id_or_sha1(params[:id])

其次,更改生成的 URL 以遵循您的新设计(如果需要)。因此,如果您希望 link_to("Jan 1, 2010", @invoice) 转到 /client/invoice/0beec7b5ea3f0fdbc95d0,请覆盖默认的 to_param 发票模型中的方法。例如:

def to_param
  sha1
end

(假设您的发票的 SHA1 哈希存储在 sha1 属性中。)

关于ruby-on-rails - 用于对象路由的 rails sha1 哈希?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1944116/

相关文章:

ruby-on-rails - Mailchimp double_optin => false 在 mailchimp-api-ruby 中不起作用

mysql - 如何使用 mysql2 gem 创建准备好的语句?

ruby-on-rails - 使用 Apache ReverseProxy 复制 TorqueBox 上 Rails 应用程序路径中的上下文

ruby-on-rails - Rails 考拉 gem 和 friend 计数

java - AES CBC PKCS5Padding Java 到 Ruby

ruby-on-rails - 从 rails 中的整数或小数中去除逗号

ruby - 为什么有七个对象的新散列比六个长度的散列慢得多?

ruby-on-rails - ruby "first"辅助方法?

ruby-on-rails - FIPS 模式导致 Ruby on Rails 应用程序因 MD5 摘要/openssl 问题而失败?

ruby-on-rails - "sudo gem install rails"不工作