我正在將我的Rails應用更新到active_model_serializers 0.10.4,但我在更新必要功能時遇到問題:能夠將請求信息添加到來自控制器。Rails - AMS - 爲每個來自控制器的json響應添加密鑰
在AMS 0.9.x中,我曾經通過使用default_serializer_options來做到這一點,但功能性消失了,顯然實現這一點的唯一方法是手動將meta
鍵添加到每個請求中。
是否有人找到解決方法來完成這項工作?
我正在將我的Rails應用更新到active_model_serializers 0.10.4,但我在更新必要功能時遇到問題:能夠將請求信息添加到來自控制器。Rails - AMS - 爲每個來自控制器的json響應添加密鑰
在AMS 0.9.x中,我曾經通過使用default_serializer_options來做到這一點,但功能性消失了,顯然實現這一點的唯一方法是手動將meta
鍵添加到每個請求中。
是否有人找到解決方法來完成這項工作?
你可以舉一個更具體的例子說明你正在做什麼?您可以創建一個ApplicationSerializer並將serialization_scope設置爲:view_context
,然後在序列化器中執行任何您想要的操作。您還可以自定義JSON適配器。或者,如果你願意,你可以在SerializableResource中添加一個模塊來添加選項。
config/initializers/active_model_serializer.rb
文件
加入這一行:
ActiveModel::Serializer.config.adapter = :json
下面的例子將在頂層加一個數據屬性,並呈現@users
對象下你的反應data
關鍵。
在你的控制器:
def index
@users = User.all
render json: @users, root: "data"
end
如果你和一個meta標籤,並與對象的數據標籤爲每個響應要一個JSON API架構,只需更改初始值設定
ActiveModel::Serializer.config.adapter = :json_api
和控制器
def index
@users = User.all
@extra_meta = {"totalCount": @users.size}
render json: @users, root: "data", meta: default_meta_attributes(@users, @extra_meta)
end
在我案例default_meta_attributes在基礎控制器中,並在一些細節上合併關於像current_user_id等請求,並且可以在每種方法中添加更多細節