2012-12-26 46 views
1

我开发企业应用程序,并想用的网址长/不平凡的ID,而不是常规的,渐进的ID。最佳实践,以实现Rails的“复杂”的网址

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

什么是遵循的步骤(迁移,协会,模特......)来实现这一结果,什么是重要的在构建此功能时要记住这一点?

+0

只是好奇,你怎么想达到与? –

+0

@SergioTulentsev,显而易见的是我不想让人们知道他们的用户ID(=有多少用户注册)。此外,用户在某些时候可以发布内容,我需要一个“秘密”网址供他们分享。更一般地说,这是我在许多企业应用程序中看到的功能。它给企业一种安全感。 – alex

+0

使用它来隐藏真实的用户数 - 很好。用它来“保护”私人资源 - 绝对不是。这是一个典型的默默无闻的安全措施,它不起作用。 –

回答

0

你可以使用friendly_id宝石做相反:让网址不会友好地:)

添加一个新的领域你的表,它会将您的长键。然后使用它是这样的:

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