2012-12-26 45 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