2
class User
has_many :posts
end
我想用as_json方法呈现json散列。在as_json中订购嵌套关联
如何在下面的代码中通过updated_at
属性排列帖子而不设置关联的默认顺序?
user.as_json(include: {posts: {include: :comments})
这不会被用作请求响应,我想避免设置关联的默认排序。
class User
has_many :posts
end
我想用as_json方法呈现json散列。在as_json中订购嵌套关联
如何在下面的代码中通过updated_at
属性排列帖子而不设置关联的默认顺序?
user.as_json(include: {posts: {include: :comments})
这不会被用作请求响应,我想避免设置关联的默认排序。
相反的范围,你可以使用自定义的方法:
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)
非常感谢您的工作解决方案!但遗憾的是,似乎没有任何继承方式可以做到这一点。通过':only',':ecxept'这些方便的帮助器方法,它是雕刻小型json对象的一种非常好的和快速的方法。 –
可能重复的[Rails渲染为json,包括嵌套属性和排序](h ttp://stackoverflow.com/questions/6972406/rails-render-as-json-include-nested-attribute-and-sort) –
@ Slava.K感谢您的努力,但你在哪里看到'as_json'你发现的问题? –
该答案中列出的所有工艺对'as_json'也同样适用。试试吧。 –