我已经开始创建一个基于模型的解决方案来创建短 URL,但我想知道在它自己的集合(使用 mongoid)中为模型之间的标记构建索引然后搜索是否会更好?或者,如果存在宝石而不是滚动我自己的解决方案。
现在我正在使用 Mongoid::Token 为特定集合生成唯一令牌(即 cUaIxBu),然后使用附加字母(->(c)UaIxBu)来确定如何将特定请求路由到哪个控制器。
任何想法或指示?
在此示例中,alternatedoma.in/cUaIxBu 将指向 realdomain.com/cities/1234
路线
get '/:id' => 'home#tiny_url', :constraints => { :domain => 'alternatedoma.in' }
控制器
def tiny_url
case params[:id].slice!(0)
when 'f'
@article = Article.find_by_token(params[:id])
redirect_to feature_url(@article)
when 'c'
@city = City.find_by_token(params[:id])
redirect_to city_url(@city)
when 'p'
@place = Place.find_by_token(params[:id])
redirect_to feature_url(@place)
end
end