如何在Rails中使用Active Model Serializers嵌入多个列?

时间:2014-12-11 18:32:58

标签: ruby-on-rails ruby active-model-serializers

我有一个

UserList模型& UserListMovie。 UserList has_many电影,通过:: user_list_movies。

最初在我的UserList序列化程序中,我只需要嵌入user_list_movies_id。

class Api::V1::UserTeamSerializer < ActiveModel::Serializer
  ...
  has_many :movies, embed: :ids
  ...
end

这显然效果很好。

但是,我最近在user_list_movies中添加了一个列,它是sort_order。当请求UserList时,我想要返回user_list_movie_id及其各自的sort_order。

我该怎么做?如何在序列化程序中包含这两个值?或者我需要以另一种方式解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

最简单的方法是创建另一个序列化程序,也许你可以将它称为MovieSerializer,它将接收一个电影对象。

class Api::V1::MovieSerializer < ActiveModel::Serializer

  attributes :id, :sort_order

end

然后在UserTeamSerializer

中指定序列化程序
class Api::V1::UserTeamSerializer < ActiveModel::Serializer
  ...
  has_many :movies, serializer: Api::V1::MovieSerializer
  ...
end

这将返回一系列序列化的电影对象,每个对象都有一个id和一个sort_order

这会回答你的问题吗?