实施"复杂"的最佳实践在Rails中的网址

时间:2012-12-26 22:43:12

标签: ruby-on-rails-3

我正在开发一个企业应用程序,并希望使用具有长/非平凡ID的URL而不是常规的增量ID。

例如,我想要http://mysite.com/users/23lkfjls0934http://mysite.com/companies/23lkfjls0934而不是http://mysite.com/users/3http://mysite.com/companies/company-name

要实现此结果需要遵循的步骤(迁移,关联,模型......)以及构建此功能时需要注意的重要事项是什么?

1 个答案:

答案 0 :(得分:0)

您可以使用friendly_id gem来做相反的事情:尽可能使网址不友好:)

在表格中添加一个新字段,它会存储您的长密钥。然后像这样使用它:

class User < ActiveRecord::Base
  extend FriendlyId
  friendly_id :name, use: :long_random_key
end

例如,您可以在before_create挂钩中初始化此长密钥。

class User < ActiveRecord::Base
  extend FriendlyId
  friendly_id :name, use: :long_random_key

  before_create :generate_long_random_key

  private
  def generate_long_random_key
    self.long_random_key = SecureRandom.hex(32)
    # TODO: Make sure it's unique
  end
end