【问题标题】:Array in serializer with multiple serializer rails具有多个序列化器轨道的序列化器中的数组
【发布时间】:2014-11-04 07:08:30
【问题描述】:

处理后得到数组。

gem 'active_model_serializers'

现在我想用serializer发送json格式的数据。

但是当我调用序列化程序时,它不会因为 Array 而获取对象。

控制器 -

def index
  question = user.questions.available 
  answer = user.where(:answer => params[:ans])
  render :json => {:qust => question, :each_serializer => QuestionSerializer,
                   :ans => answer, :each_serializer => AnswerSerializer}
end

question_serializer.rb

class QuestionSerializer < ActiveModel::Serializer
  attributes :id, :question, :type
end

answer_serializer.rb

class AnswerSerializer < ActiveModel::Serializer
  attributes :id, :answer, :date

  def date
   object.date = "..."
  end
end

【问题讨论】:

  • 您能否发布一个由此产生的样本,因为不清楚您的问题是什么。

标签: ruby-on-rails ruby arrays json


【解决方案1】:

或者像这样:

options        = {each_serializer: QuestionSerializer}
user_questions = user.questions.available 
questions      = ActiveModelSerializers::SerializableResource.new(user_questions, options)

render json: {
   qust: questions.as_json
}

【讨论】:

    【解决方案2】:

    试试这个:

    render json: {
      qust: ActiveModel::ArraySerializer.new(question, each_serializer: QuestionSerializer),
      ans: ActiveModel::ArraySerializer.new(answer, each_serializer: AnswerSerializer),
    }
    

    旁白:

    • 注意您的命名,在处理集合时使用复数。
    • answer = user.where(:answer =&gt; params[:ans]) 看起来很糟糕

    【讨论】:

    • 语法已从ActiveModel::ArraySerializer.new 更新为ActiveModel::Serializer::CollectionSerializer.new - 请参阅github.com/rails-api/active_model_serializers/issues/1809
    • 嘿.. 使用此方法 current_user 在序列化程序中无法访问
    • @HardikGondaliya 添加scope: current_user 并在您的序列化程序中使用scope
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多