json - In Rails, how can you return model data from multiple different ActiveModelSerializers/Models at once? -
i have couple models. let's call them widget , gadget.
my #index for widget , gadget looks this
def index widgets = widget.all if widgets respond_with widgets, each_serializer: api::v1::widgetserializer else render json: { message: [t(:not_found_widget)] }, status: :not_found end end def index gadgets = gadget.all if gadgets respond_with gadgets, each_serializer: api::v1::gadgetserializer else render json: { message: [t(:not_found_gadget)] }, status: :not_found end end and serializers...
class api::v1::widgetserializer < activemodel::serializer attributes :id, :desc end class api::v1::gadgetserializer < activemodel::serializer attributes :id, :desc end however, have need resource returns both of in 1. need both widgets , gadgets returned @ once. json like...
{ "widgets": [ { "id": 1, "desc": "one" }, { "id": 2, "desc": "two" } ], "gadgets": [ { "id": 1, "desc": "one" }, { "id": 2, "desc": "two" } ] } how can achieve this. like
widgets = widget.all gadgets = gadget.all respond_with widgets, each_serializer: api::v1::widgetserializer, gadgets, each_serializer: api::v1::gadgetserializer however, doesn't work.
serializer classes don't have match ar models. serializer classes should used representation of json want produce. in example, let's assume call new serializer dashboardserializer, can put both widgets , gadgets there:
class dashboardserializer < activemodel::serializer self.root = false attributes :widgets, :gadgets def widgets widget.all end def gadgets gadget.all end end
Comments
Post a Comment