Rails ActiveModelSerializer将两个相同类型模型的列表组合成一个序列化响应,具有不同的名称
我有一个rails api,其中我使用Active Model Serializers(版本0.10.6)来序列化json响应。
我有两个数组,在端点中都是“FeatureRequest”类型,返回用户发出的请求列表,以及第二个用户被标记的请求列表。理想情况下,我想将响应序列化为看起来像这样:
{ "my_requests" : { ...each serialized request... }, "tagged_requests" : { ...each serialized request, using the same serializer" } }
有办法做到这一点吗?
这是我的相关控制器方法:
def index_for_user user = User.includes(leagues: :feature_requests).find(params[:user_id]) # Find all requests that this user created @users_created_feature_requests = FeatureRequest.requests_for_user(user.id) @feature_requests_in_tagged_leagues = [] user.leagues.each do |league| @feature_requests_in_tagged_leagues << league.feature_requests end ...some serialized response here end
在此代码中,两个列表是@users_created_feature_requests和@feature_requests_in_tagged_leagues
谢谢!
假设您有一个像FeatureRequestSerializer
这样的序列化FeatureRequestSerializer
,您可以通过以下方式实现:
def index_for_user user = ... users_created_feature_requests = ... feature_requests_in_tagged_leagues = user.leagues.map(&:feature_requests) # serialized response render json: { my_requests: serialized_resource(users_created_feature_requests) tagged_requests: serialized_resource(feature_requests_in_tagged_leagues) } end private def serialized_resource(collection, adapter = :attributes) ActiveModelSerializers::SerializableResource.new(collection, each_serializer: FeatureRequestSerializer, adapter: adapter ).as_json end
- ActiveModel :: Serializers Gem – Versioned API命名空间问题
- 版本控制ActiveModel :: Serializer
- Url Helper在ActiveModelSerializer 0.10.0中?
- 使用ActiveModel :: Serializer序列化具有属性的数组/关系
- 强制活动模型序列化程序返回关联
- 使用Rspec测试ActiveModel :: Serializer类
- <NoMethodError:#Record :: ActiveRecord_Relation的未定义方法`read_attribute_for_serialization':
- 如何为活动模型序列化器关系选择所需的属性
- 如何在active_model_serializers中执行预先加载