0

我有一个使用 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),新方法是完全重写,而不是增量更改。

4

1 回答 1

0

首先,我建议在REST API 版本控制上观看 Ryan Bates 的 railscast 。他很好地解释了如何在维护 BC 的同时管理应用程序中的 API 更改。

于 2012-07-09T22:26:22.960 回答