目前,我使用api-versions
gem 很好地创建 api 路由并在请求 HEAD 中包含版本信息。
但是,有时模型需要知道正在使用的 api 版本。例如,验证。假设需要在任何版本 >= 2 上验证用户名的存在,但在版本 < 2 上则不需要。
在 Controller 层,通过解析出相应的请求 HEAD 很容易检索 api 版本。但是将该版本号传达给模型的最佳方式是什么?
目前,我使用api-versions
gem 很好地创建 api 路由并在请求 HEAD 中包含版本信息。
但是,有时模型需要知道正在使用的 api 版本。例如,验证。假设需要在任何版本 >= 2 上验证用户名的存在,但在版本 < 2 上则不需要。
在 Controller 层,通过解析出相应的请求 HEAD 很容易检索 api 版本。但是将该版本号传达给模型的最佳方式是什么?
如何在模型类中定义一个伪属性,验证器有条件地执行
class SomeModel < ActiveRecord::Base
attr_accessor :api_version
validates_presence_of :username, :if => :api_version > 2
...
然后从控制器中,在保存等之前在模型上设置 api_version
@someModel = SomeModel.new(params[:some_model])
@someModel.api_version = <<extracted from HEAD>>
@someModel.save!