Ruby on rails 在Rails中,如何一次从多个不同的ActiveModelSerializer/模型返回模型数据?
我有几个模特。让我们称它们为Widget和Gadget 我的Widget和Gadget索引如下所示Ruby on rails 在Rails中,如何一次从多个不同的ActiveModelSerializer/模型返回模型数据?,ruby-on-rails,json,active-model-serializers,Ruby On Rails,Json,Active Model Serializers,我有几个模特。让我们称它们为Widget和Gadget 我的Widget和Gadget索引如下所示 def index widgets = Widget.all if widgets respond_with widgets, each_serializer: Api::V1::WidgetSerializer else render json: { message: [t(:not_found_widget)] }, status: :n
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
还有我的连载程序
class Api::V1::WidgetSerializer < ActiveModel::Serializer
attributes :id, :desc
end
class Api::V1::GadgetSerializer < ActiveModel::Serializer
attributes :id, :desc
end
我怎样才能做到这一点。差不多
widgets = Widget.all
gadgets = Gadget.all
respond_with widgets, each_serializer: Api::V1::WidgetSerializer, gadgets, each_serializer: Api::V1::GadgetSerializer
class Composite < ActiveRecord::Base
has_many :widgets
has_many :gadgets
end
class CompositeSerializer < ActiveModel::Serializer
attributes :id
has_many :widgets
has_many :gadgets
end
但是,这显然不起作用。我能看到这一效果的唯一方法是,如果您有一个模型,它有许多小部件,并且有许多小部件与自己的序列化程序,因为AMS将对序列化程序中声明的关联应用正确的序列化程序 差不多
widgets = Widget.all
gadgets = Gadget.all
respond_with widgets, each_serializer: Api::V1::WidgetSerializer, gadgets, each_serializer: Api::V1::GadgetSerializer
class Composite < ActiveRecord::Base
has_many :widgets
has_many :gadgets
end
class CompositeSerializer < ActiveModel::Serializer
attributes :id
has_many :widgets
has_many :gadgets
end
class复合
我能看出这一点的唯一方法是,如果您有一个模型,它有许多小部件,并且有许多小部件与自己的序列化程序,因为AMS将对序列化程序中声明的关联应用正确的序列化程序
差不多
widgets = Widget.all
gadgets = Gadget.all
respond_with widgets, each_serializer: Api::V1::WidgetSerializer, gadgets, each_serializer: Api::V1::GadgetSerializer
class Composite < ActiveRecord::Base
has_many :widgets
has_many :gadgets
end
class CompositeSerializer < ActiveModel::Serializer
attributes :id
has_many :widgets
has_many :gadgets
end
class复合
我能看出这一点的唯一方法是,如果您有一个模型,它有许多小部件,并且有许多小部件与自己的序列化程序,因为AMS将对序列化程序中声明的关联应用正确的序列化程序
差不多
widgets = Widget.all
gadgets = Gadget.all
respond_with widgets, each_serializer: Api::V1::WidgetSerializer, gadgets, each_serializer: Api::V1::GadgetSerializer
class Composite < ActiveRecord::Base
has_many :widgets
has_many :gadgets
end
class CompositeSerializer < ActiveModel::Serializer
attributes :id
has_many :widgets
has_many :gadgets
end
class复合
我能看出这一点的唯一方法是,如果您有一个模型,它有许多小部件,并且有许多小部件与自己的序列化程序,因为AMS将对序列化程序中声明的关联应用正确的序列化程序
差不多
widgets = Widget.all
gadgets = Gadget.all
respond_with widgets, each_serializer: Api::V1::WidgetSerializer, gadgets, each_serializer: Api::V1::GadgetSerializer
class Composite < ActiveRecord::Base
has_many :widgets
has_many :gadgets
end
class CompositeSerializer < ActiveModel::Serializer
attributes :id
has_many :widgets
has_many :gadgets
end
class复合
序列化程序类不必与AR模型匹配。序列化程序类应该用作要生成的JSON的表示形式。在您的示例中,假设调用一个新的序列化程序仪表板序列化程序
,然后您可以将小部件
和小部件
放在那里:
class DashboardSerializer < ActiveModel::Serializer
self.root = false
attributes :widgets, :gadgets
def widgets
Widget.all
end
def gadgets
Gadget.all
end
end
类DashboardSerializer仪表板序列化程序
,然后您可以将小部件
和小部件
放在那里:
class DashboardSerializer < ActiveModel::Serializer
self.root = false
attributes :widgets, :gadgets
def widgets
Widget.all
end
def gadgets
Gadget.all
end
end
类DashboardSerializer仪表板序列化程序
,然后您可以将小部件
和小部件
放在那里:
class DashboardSerializer < ActiveModel::Serializer
self.root = false
attributes :widgets, :gadgets
def widgets
Widget.all
end
def gadgets
Gadget.all
end
end
类DashboardSerializer仪表板序列化程序
,然后您可以将小部件
和小部件
放在那里:
class DashboardSerializer < ActiveModel::Serializer
self.root = false
attributes :widgets, :gadgets
def widgets
Widget.all
end
def gadgets
Gadget.all
end
end
类DashboardSerializer