首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Rails序列化器.使用选择性包含/排除控制关联的属性

Rails序列化器.使用选择性包含/排除控制关联的属性
EN

Stack Overflow用户
提问于 2017-11-29 21:10:46
回答 1查看 451关注 0票数 0

我有两个资源- postauthorpost有一个author。当我获取文章的详细信息时,我想有选择地包括作者的细节。

例子-

GET /authors/1

代码语言:javascript
运行
AI代码解释
复制
{
  'id': 1,
  'name': 'Some name',
  'email': 'admin@example.com',
  'address': 'Some address',
  'mobile': '',
  'language': 'ruby'
}

GET /posts/1

我想要-

代码语言:javascript
运行
AI代码解释
复制
{
  'id': 1,
  'created_at': '2017-01-01 10:00:00',
  'views': 7500,
  'seo_score': 4,
  'author': {
    'id': 1,
    'name': 'Some name',
    'email': 'admin@example.com'
  }
}

而不是,

代码语言:javascript
运行
AI代码解释
复制
{
  'id': 1,
  'created_at': '2017-01-01 10:00:00',
  'views': 7500,
  'seo_score': 4,
  'author': {
    'id': 1,
    'name': 'Some name',
    'email': 'admin@example.com',
    'address': 'Some address',
    'mobile': '',
    'language': 'ruby'
  }
}
  • 我想知道是否可以通过使用includeexcludeonly等在序列化程序中选择性地选择关联的属性。
  • 我知道我可以编写一个单独的序列化程序,并在定义它的同时将它映射到关联,但是仅仅包括两个特定的属性,我认为添加一个单独的类是没有意义的。
  • 我还知道,我可以重写关联,获取所有属性,并有选择地选择几个属性;但是,我想知道序列化程序是否默认支持这一点。
EN

回答 1

Stack Overflow用户

发布于 2017-11-29 21:18:57

您可以创建与所选列的新关联,如下所示

代码语言:javascript
运行
AI代码解释
复制
belongs_to :author_with_partial_details, -> { select [:id, :name, :email] }, :class_name => "Author"

然后用它像这样

代码语言:javascript
运行
AI代码解释
复制
Post.find(params[:id]).includes(:author_with_partial_details)

或者,您也可以使用jbuilder来创建自己的JSON结构,下面是到https://github.com/rails/jbuilder的链接

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47566300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档