我正在为数据库中的记录创建名称更改历史记录。因此,如果有人更改了他们拥有的内容的名称,旧的URL仍然有用。
我正在尝试这样的事情:
textWrapper
此路线的两种完成方式:
工作:它什么都没找到,返回false,所以路线执行顺序继续下去。
不工作:找到一些东西并重定向到路线历史中的最新名称。
返回重定向latest_url根本没有重定向 - 任何建议?
答案 0 :(得分:0)
由于针对每条路线的测试在第一场比赛中停止,因此有两条路线更简单:
# legacy name support
get '/:id', to: redirect(latest_url), constraints: lambda { |request|
urls = ['a', 'b', 'c']
urls.include? request.params[:id]
}
# latest and greatest
get '/:id', to: "services#show", as: 'show_service'
PS:我还建议这很复杂,足以保证它自己的类响应matches?
而不是内联lambda,请参阅http://guides.rubyonrails.org/routing.html#advanced-constraints
PPS:根据用例的复杂程度,值得一看 friendly_id gem及 history 模块。