Ruby on rails 如何使用:include,:except,:仅用于rails渲染中的:方法的散列
我需要呈现行程json,但将所有TODO合并为嵌套在其中的单个json数组:Ruby on rails 如何使用:include,:except,:仅用于rails渲染中的:方法的散列,ruby-on-rails,json,render,rails-api,Ruby On Rails,Json,Render,Rails Api,我需要呈现行程json,但将所有TODO合并为嵌套在其中的单个json数组: render json: @itinerary, include: { places: { only: [:id, :title], include: { todos: {
render json: @itinerary, include: {
places: {
only: [:id, :title],
include: {
todos: {
only: [:id, :content],
include: :todo_type
},
place_category: {
include: {
todos: {
only: [:id, :content],
include: :todo_type
}
}
},
climate: {
include: {
todos: {
only: [:id, :content],
include: :todo_type
}
}
}
}
}
}
我希望将所有TODO呈现在一起,这样客户机就不必整合所有TODO、删除重复项以及对其执行其他工作
因此,我创建了一个方法,即todos就地模型
然后将我的渲染方法更改为
render json: @itinerary, include: {
places: {
only: [:id, :title],
include: :place_category,
methods: [:consolidated_todos],
}
}
如何添加:include:todo_type等,:only:id,:content等,以及:从:方法返回的哈希除外
我需要做一些类似方法的事情:[合并的todo:{include::todo_type}]
编辑:
这个问题不是关于
如何序列化资源
如何包含嵌套资源
使用jbuilder/activemodelserializer/RABL/类似的libs执行1或2
但是特别是关于使用include作为从:methods返回的散列或等效的短期解决方法,而不是使用as_json作为相同的我认为您不能,甚至您可以,您可能应该创建不同的方法,在其中选择所需的数据,然后在渲染对象时使用它们。它将更易于阅读和维护。我认为您不能,甚至可以,您可能应该创建不同的方法,在其中选择所需的数据,然后在渲染对象时使用它们。它将更易于阅读和维护。在何处选择所需的数据,然后在渲染对象时选择这些数据:是否可以添加一个示例以使其更加清晰?我不明白你的意思,当你打破轨道时,给那些试图帮助你的人负面评价最佳实践:/。你可能还在想为什么没有得到更多的回复。需要一个详细的规范答案来解决所有的问题-你能更清楚一点吗?在何处添加这些方法以及如何在使用方法时调用它们:[]在何处选择所需的数据,然后在渲染对象时调用它们:您能否添加一个示例来说明这一点?我不明白你的意思,当你打破轨道时,给那些试图帮助你的人负面评价最佳实践:/。你可能还在想为什么没有得到更多的回复。需要一个详细的规范答案来解决所有的问题-你能更清楚一点吗?在何处添加这些方法以及在使用方法时如何调用它们:[]
render json: @itinerary, include: {
places: {
only: [:id, :title],
include: :place_category,
methods: [:consolidated_todos],
}
}