繁体   English   中英

在 Rails json 响应中包含关联

[英]include Association in Rails json Response

学术批次属于学院

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"}] 

我应该做哪些改变??

定义一个名为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 响应会更好。 这让工作变得简单

你可以这样做:

academic_batches = AcademicBatch.all
render json: {
  items: academic_batches.includes(:academy).as_json({only: [:id, :name]}).map {|a| a.merge(academy: a.academy.name)}
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM