我希望用户转到以下格式的网址mydomain.com/modelname/random_string或mydomain.com/random_string ...
示例mydomain.com/dh7eo
我见过Hashids但我想知道这是使用标准整数ID并将Hashid创建的字符串分配给另一个字段的最佳方式...或者我将标准ID替换为ruby创建
感谢阅读!
答案 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