class User
has_many :posts
end
我想用as_json方法渲染json哈希。
如何在不设置关联的默认顺序的情况下,通过updated_at
属性在下面的代码中订购帖子?
user.as_json(include: {posts: {include: :comments})
这不会被用作请求响应,我想避免在关联上设置默认排序。
答案 0 :(得分:2)
您可以使用自定义方法代替范围:
class User < ApplicationRecord
has_many :posts
def updated_posts
posts.order("posts.updated_at").as_json(include: :comments)
end
end
user.as_json(methods: :updated_posts)
这会产生这样的结果:
{
# user attributes
"updated_posts => [
# posts with comments
]
}
如果您希望帖子严格位于posts
键下,您可以执行以下操作:
json = user.as_json(methods: :updated_posts)
json[:posts] = json.delete(:updated_posts)