我需要渲染行程json但合并所有todos 作为嵌套在其中的单个json数组:
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
}
}
}
}
}
}
我希望将所有待办事项汇总在一起,以便客户不必整合所有待办事项,删除重复项并对其进行其他工作。
所以我在consolidated_todos
模型
place
def considated_todos
todos = self.todos
todos += self.place_category.todos
todos += self.climate.todos
todos
end
然后将我的render方法改为以下
render json: @itinerary, include: {
places: {
only: [:id, :title],
include: :place_category,
methods: [:consolidated_todos],
}
}
如何添加
:include
(:todo_type等),:only
(:id,:content等)和:except
从:methods
返回的哈希值?
我需要做methods: [ consolidated_todos: { include: :todo_type } ]
之类的事情。
修改:
这个问题不关于
但具体是关于将include
用于从:methods
返回的哈希值或等效的简短解决方法(而不是使用as_json
)用于相同的
答案 0 :(得分:-1)
我认为你不能,甚至可以,你可能应该创建不同的方法来选择所需的数据,然后在渲染对象时再选择它们。它将更容易阅读和维护。