0

現在、api-versionsAPIルートを適切に作成し、リクエストHEADにバージョン情報を含むgemを使用しています。

ただし、モデルは、使用されている API バージョンを知る必要がある場合があります。例、検証。ユーザー名の存在は、バージョン >= 2 では検証する必要があるが、バージョン < 2 では検証する必要はないとしましょう。

コントローラー レイヤーでは、適切なリクエスト HEAD を解析することで、API バージョンを簡単に取得できます。しかし、そのバージョン番号をモデルに伝える最善の方法は何でしょうか?

4

1 に答える 1

0

条件付きで動作するバリデーターを使用して、モデルクラスで疑似属性を定義するのはどうですか

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!
于 2013-02-13T23:18:01.110 に答える