对于出现在不同地方的同一模型使用不同的序列化器

时间:2013-12-03 14:31:10

标签: ruby-on-rails serialization

希望有人可以帮助我

我使用rails序列化程序将我的模型输出格式化为RESTFul JSON Web服务。

现在我的问题是......

假设我有一个模型用户,我将在应用程序中随处使用。我想要的一些地方几乎都是用户数据(姓名,电子邮件,电话,地址等等),而其他地方我只想要这个名字,电子邮件。但是,这些用户对象通过has_many,belongs_to ...等附加到某个主模型。

那么如何在每个特定输出中指出我想要的用户序列化器。

提前致谢

1 个答案:

答案 0 :(得分:0)

在您的情况下,您希望每种情况都使用自定义序列化程序,因此请使用不同的序列化程序。

 has_many :users, serializer: UserAllSerializer

如果你想从the github page of rails serializer删除整个密钥,也可以这样做。

class PostSerializer < ActiveModel::Serializer
  attributes :id, :title, :body
  has_many :comments

  def filter(keys)
    keys.delete :comments if object.comments_disabled?
    keys
  end
end

如果您想确定序列化的范围,请查看at this part