Ruby on rails rails mongoid url缩短器

Ruby on rails rails mongoid url缩短器,ruby-on-rails,ruby-on-rails-3,mongoid,url-shortener,mongoid3,Ruby On Rails,Ruby On Rails 3,Mongoid,Url Shortener,Mongoid3,我已经开始创建一个基于模型的解决方案来创建短URL,但我想知道在它自己的集合中(使用mongoid)创建模型间令牌的索引然后搜索是否会更好?或者如果存在一块宝石而不是我自己的解决方案 现在我正在使用Mongoid::Token,它为特定集合生成一个唯一的令牌(即cUaIxBu),然后使用一个额外的字母(->(c)UaIxBu)来计算如何将特定请求路由到哪个控制器 有什么想法或建议吗 在本例中,alternatedoma.In/cUaIxBu将指向realdomain.com/cities/123

我已经开始创建一个基于模型的解决方案来创建短URL,但我想知道在它自己的集合中(使用mongoid)创建模型间令牌的索引然后搜索是否会更好?或者如果存在一块宝石而不是我自己的解决方案

现在我正在使用Mongoid::Token,它为特定集合生成一个唯一的令牌(即cUaIxBu),然后使用一个额外的字母(->(c)UaIxBu)来计算如何将特定请求路由到哪个控制器

有什么想法或建议吗

在本例中,alternatedoma.In/cUaIxBu将指向realdomain.com/cities/1234

路线 控制器
我们在我目前正在开发的一个应用程序中使用了一个几乎相同的系统,而且它似乎工作正常(到目前为止!)。我能想到的唯一一件事是,您可以简化您的LoC,并在将来轻松添加对其他模型的支持(如果需要):

supported_models = {:a => Article, :c => City, :p => Place}
prefix = params[:id].slice!(0).to_sym
if supported_models.has_key?(prefix)
  @obj = supported_models[prefix].find_by_token(params[:id])
  redirect_to send(:"#{supported_models[prefix].name.underscore}_url", @obj)
end

显然,这将要求路由助手遵循与模型相同的名称。例如:
Article
Article\u-url
City
City\u-url
,等等。

我们在我目前正在开发的一个应用程序中采用了几乎相同的系统,而且它似乎运行正常(到目前为止!)。我能想到的唯一一件事是,您可以简化您的LoC,并在将来轻松添加对其他模型的支持(如果需要):

supported_models = {:a => Article, :c => City, :p => Place}
prefix = params[:id].slice!(0).to_sym
if supported_models.has_key?(prefix)
  @obj = supported_models[prefix].find_by_token(params[:id])
  redirect_to send(:"#{supported_models[prefix].name.underscore}_url", @obj)
end

显然,这将要求路由助手遵循与模型相同的名称。例如:
Article
Article\u-url
City
City\u-url
,等等。

从未使用过它,但也许你应该检查mongoid\u-shortener从未使用过它,但也许你应该检查mongoid\u-shortener
supported_models = {:a => Article, :c => City, :p => Place}
prefix = params[:id].slice!(0).to_sym
if supported_models.has_key?(prefix)
  @obj = supported_models[prefix].find_by_token(params[:id])
  redirect_to send(:"#{supported_models[prefix].name.underscore}_url", @obj)
end