我有一个使用 RESTful API 返回一些 XML 数据的 Web 服务。我将使用完全不同的控制器代码实现一个新数据库,该数据库将在某个日期后生效。但是任何对旧数据的 WS 调用仍应使用旧数据库。
现在,部分 URL 包含日期。我在控制器的开头解析它,然后转到旧功能或新功能。
def web_service_action
#shared code between old and new methods
@some_instance_variables = ...
# check the date and fork appropriately
if use_new?
web_service_action_new
else
web_service_action_old
end
def use_new?
date_match = params[:id_string].match(/^.*([0-9]{8})$/)
matched_date = date_match[1]
date = Time.local(date_match[0,4],date_match[4,2],date_match[6,2])
if date >= DATE_CONSTANT
return true
else
return false
end
end
end
我想知道是否有一种聪明的方法可以通过路由文件中的 before_filter 或条件来做到这一点?
附加信息:我使用的是旧版本的 Rails (2.3.x),新方法是完全重写,而不是增量更改。