【发布时间】:2017-04-06 04:06:58
【问题描述】:
我正在用 ruby 构建 REST API
我使用@object.as_json()作为json格式的响应
在as_json 中传输数据时,我卡在了中间。我需要更多地自定义响应
我列出了我到底想要什么以及我卡在哪里
我正在使用下面的代码
@videos = Video.all.map{|m| m.as_json(
only: [:title],
method: [:watch_count],
include: {
user: {
only: [:first_name],
method: [:role]
}
}
).merge(
is_upvoted: m.is_upvoted(current_user)
) }
但我需要自定义它。
1- 我需要在视频和用户对象中传递手动键和值(不在数据库中),目前可以使用视频但不能使用用户。它应该可以与父对象及其子关联对象一起使用。我不想使用 :method 来做同样的事情
2-我需要在 :method 中传递参数,比如视频模型有一个方法 is_upvoted 但有一个像当前用户一样的参数。所以我无法在 :method 中传递参数。目前我可以像我一样使用合并,但它不能使用用户对象。
3- 使用时我需要更改键名:{user: {method: []}}。 我需要在“用户”的地方使用密钥“所有者”
提前致谢
【问题讨论】:
-
明确执行
user.as_json并在之后合并结果?
标签: ruby-on-rails json ruby ruby-on-rails-3 ruby-on-rails-4