5

レガシ アプリを使用する必要があり、古い (PHP ベースの) REST API を書き直す必要があります。古い API では、属性が null の場合、空の文字列になりました。

ただし、Rails は null を返すだけで、アプリが壊れます。アプリを書き直すことは解決策ではありません (これが最もクリーンな方法であっても)。また、古い API では、他の値は文字列 (整数、ブール値、数値) です。だから私は、もちろんすべての属性をオーバーライドせずに、すべての属性で to_s を実行するにはどうすればよいのか疑問に思っていました。アクティブ モデル シリアライザーを使用しています。

4

1 に答える 1

9

少しのメタプログラミングが役立つはずです。

class MySerializer < ActiveModel::Serializer

  [:id, :attr1, :attr2, :attr2].each do |attr|
    # Tell serializer its an attribute
    attribute attr

    # Define a method with the same name as the attribute that calls the
    # underlying object and to_s on the result
    define_method attr do
      object.send(attr).to_s
    end
  end

end
于 2013-11-13T16:28:38.713 に答える