1

現在、シリアライザー内のパラメーターにアクセスする必要がありますが、ここで何が最善のアプローチになるかわかりません。

基本的には、params ハッシュ内にあるタイムゾーンにアクセスして、そのタイムゾーンに変換されたモデルの時間属性で応答するだけです。

4

1 に答える 1

1

次のように、現在のユーザーと params ハッシュの両方へのアクセスを許可する単純な構造体オブジェクトを作成しました。

SerializerScope = Struct.new(:current_resource_owner, :params)

その宣言を初期化子に入れ、それをメインの API コントローラーで使用します。

def default_serializer_options
  {
    scope: SerializerScope.new(current_resource_owner, params)
  }
end

シリアライザー内で、scope.current_resource_ownerandにアクセスできますscope.params

テスト内で適切にスタブする必要があるため、テストは少し手間がかかります。

serializer_scope = SerializerScope.new
serializer_scope.current_resource_owner = # a user
serializer_scope.params = {} # override and re-stub within controller action tests
MySerializer.any_instance.stub(scope: serializer_scope)

明らかに、シリアライザー内からパラメーターにアクセスする場合、:id などの特定の共通パラメーターがコントローラーごとに変更される可能性があることを確認してください。

これはすべて AMS ~> v0.8.0 を使用しています。

于 2014-05-02T22:11:00.627 に答える