2017-01-30 34 views
4

我正在將我的Rails應用更新到active_model_serializers 0.10.4,但我在更新必要功能時遇到問題:能夠將請求信息添加到來自控制器。Rails - AMS - 爲每個來自控制器的json響應添加密鑰

在AMS 0.9.x中,我曾經通過使用default_serializer_options來做到這一點,但功能性消失了,顯然實現這一點的唯一方法是手動將meta鍵添加到每個請求中。

是否有人找到解決方法來完成這項工作?

回答

0

你可以舉一個更具體的例子說明你正在做什麼?您可以創建一個ApplicationSerializer並將serialization_scope設置爲:view_context,然後在序列化器中執行任何您想要的操作。您還可以自定義JSON適配器。或者,如果你願意,你可以在SerializableResource中添加一個模塊來添加選項。

2
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等請求,並且可以在每種方法中添加更多細節