有没有办法生成一个唯一的整数永久链接?

时间:2014-04-04 10:55:29

标签: ruby-on-rails ruby

我正在尝试在rails中创建一个唯一的数字永久链接。我的问题是我需要确保它是唯一的,有5到7个数字并且是随机生成的(因此不是简单地计算)。我确实看过FriendlyID,但我不确定这是否可以提供我需要的东西 - 我的永久链接的网址最终应该是这样的:

www.kreelu.com/4325677

是否有内置功能或gem可以提供此功能?

谢谢!

2 个答案:

答案 0 :(得分:1)

after_validation :set_permalink

def rand_permalink #you can find a better way to exclude loop db-searches
  r = rand.to_s[2..8] # 7-digit random, you can make [2..11] for 10-digits and so on
  while find_by_permalink(r).present?
    r = rand.to_s[2..8]
  end
  r      
end 


def set_permalink
  permalink = rand_permalink unless permalink.presence
end

答案 1 :(得分:1)

假设您要在create上创建唯一的permalink,您希望将其存储在数据库中,并将该类命名为Post

validate :permalink, :uniqueness => true

before_create :create_permalink

private
  def create_permalink
    loop do
      self.permalink = Array(1..7).map{ rand(10).to_s }.join
      return if Posts.where(permalink: permalink).blank?
    end
  end