学术批次属于书院
academic_batches = AcademicBatch.all
render json: {
items: academic_batches.as_json({only: [:id, :name],include:[ academy: {only: [:name]} ]})
}响应看起来是这样的
[{"id"=>1, "name"=>"2010-2014", "academy"=>{"name"=>"College of Engineering Guindy"}}] 但是出于其他一些原因,我需要这样的响应:
[{"id"=>1, "name"=>"2010-2014", "academy"=>"College of Engineering Guindy"}] 我应该做什么改变??
发布于 2020-10-15 18:40:49
定义一个名为academy_name的方法并访问,如下所示:
academic_batches = AcademicBatch.all
render json: {
items: academic_batches.includes(:academy).as_json({only: [:id, :name], methods: :academy_name})
}如果您使用序列化程序(如https://github.com/rails-api/active_model_serializers & https://github.com/Netflix/fast_jsonapi)来呈现JSON响应,那会更好。这使得工作变得简单。
发布于 2020-10-15 19:43:10
你可以这样做:
academic_batches = AcademicBatch.all
render json: {
items: academic_batches.includes(:academy).as_json({only: [:id, :name]}).map {|a| a.merge(academy: a.academy.name)}
}https://stackoverflow.com/questions/64367119
复制相似问题