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'也同樣適用。試試吧。 –