使用唯一的随机生成的短字母数字字符串作为Ruby中模型的id

时间:2015-01-08 19:39:25

标签: ruby-on-rails ruby

我希望用户转到以下格式的网址mydomain.com/modelname/random_string或mydomain.com/random_string ...

示例mydomain.com/dh7eo

我见过Hashids但我想知道这是使用标准整数ID并将Hashid创建的字符串分配给另一个字段的最佳方式...或者我将标准ID替换为ruby创建

感谢阅读!

1 个答案:

答案 0 :(得分:0)

如果您只对URL中较短的标识符感兴趣,并且如果您可以通过这些标识符轻松计算出真实ID,那么您可以执行以下操作:

# in your model
UID_BASE = 36

def self.by_uid(uid)
  find(uid.to_i(UID_BASE))
end

def to_param
  id.to_s(UID_BASE)
end

在模型中使用它仍然可以使用链接构建器:

redirect_to @model
redirect_to edit_model_path(@model)
link_to 'Show', @model

要在控制器中加载模型:

def show
  @model = Model.by_uid(params[:id]) # not params[:uid]
end