【问题标题】:using different serializer for the same model appearing at different places对出现在不同位置的同一模型使用不同的序列化程序
【发布时间】:2013-12-03 14:31:10
【问题描述】:

希望有人能帮我解决这个问题

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

现在我的问题是……

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

那么我怎样才能在每个特定的输出中为用户指明我想要的序列化器。

提前致谢

【问题讨论】:

    标签: ruby-on-rails serialization


    【解决方案1】:

    在您的情况下,您需要自定义序列化程序,因此请使用不同的序列化程序。

     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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-23
      • 2014-07-10
      • 1970-01-01
      • 1970-01-01
      • 2019-05-25
      • 2014-11-25
      • 1970-01-01
      相关资源
      最近更新 更多