问题标签 [active-model-serializers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1123 浏览

ruby-on-rails - 为具有 belongs_to 关联的模型构建 json api 时,该关联的白名单属性将被忽略

我正在为我的模型构建一个 json api,User以及一个User belongs_to :role. 即使我已经为Role我想要包含的属性构建了一个 json api 并将其列入白名单,但每当我访问一个user#show操作时,白名单中的属性都会被忽略。

在我的RoleSerializer文件中,我指定只能访问两个属性::id:name. 当我转到“roles#show”操作时,它工作正常并且只呈现这两个属性。

/roles/1.json

但是,此 json 响应不用于user#showjson 响应。它不断添加我不想要的created_atand属性。updated_at

/users/1.json

我尝试了多种列出:role属性的方法,user_serializer.rb包括下面的代码。不幸的是,这不起作用。

user_serializer.rb

users_controller.rb - 显示动作

用户.rb

0 投票
2 回答
8243 浏览

ruby-on-rails - 与 Active Model Serializers 的急切负载关联

背景

我有一个具有深度嵌套关联的 Rails 应用程序。

我正在使用Active Model Serializer来构建 API。

在客户端,我想一次性加载一张考勤卡及其所有关联。

目前我的序列化程序看起来像这样,

问题

这一切都可以找到,除了没有任何东西被急切加载。所以它最终会为每个请求对数据库进行大量调用。对于每一周,它都会单独请求该周的天数。并且对于每一天,它都会单独请求它的 work_periods、小计和调整。

0 投票
2 回答
9316 浏览

ruby-on-rails - 如何对 Rails Active Model 序列化程序的响应进行排序

奇怪的是,我没有找到任何关于这个主题的东西......

如何对 Rails 服务器提供的 JSON 进行排序?我目前正在使用 ActiveModel 序列化器:

我想对嵌入的places.

我找到的唯一答案是这个 SO question,但它解释了序列化程序默认如何排序,而不是我如何排序。

0 投票
1 回答
1307 浏览

ruby-on-rails - Rails Active Model Serializer - 需要在发送之前操作渲染的 json

所以这是一个有趣的——我有一个控制器方法,它根据一些规则返回一个“可恢复”对象的列表。但是,有一些条件我不能包含在单个数据库查询中——所以,我想渲染出“基本”可恢复列表,然后在返回客户端之前对其运行过滤器。

换句话说,我想做的是:

无论如何,SessionResumeSerializer.new(sessions).as_json完全不起作用,抛出一个:

NoMethodError: undefined method 'read_attribute_for_serialization' for <ActiveRecord::Relation:0x007ffa164b0ce0>错误。

我显然对这应该如何工作感到困惑——初始化程序会获取一个关系并将其呈现出来,这似乎完全直观。

有没有更好的方法来解决这个问题?

0 投票
1 回答
704 浏览

ruby-on-rails-3 - 活动模型序列化器和多个元值

我正在查看 Active Model Serializer 的 README 并查看以下示例:

但我希望能够输出:

我猜我需要有两个元对象。这可能吗?我该怎么做?

0 投票
3 回答
3390 浏览

ruby-on-rails - 使用 ActiveModel::Serializer 用属性序列化数组/关系

我想使用 Active Model Serializers 序列化关系,并且我想为此关系设置一些“全局”属性(例如计数):

我怎么能那样做?

0 投票
1 回答
356 浏览

ruby-on-rails - 与活动模型序列化程序的复杂关联

为了简单起见,我写了这个问题,就像写博客应用程序一样,但实际上它是一个完全不同的应用程序。我的 users_controller.rb 中有一个与此类似的显示操作。

每个post也有很多comments。如果我想显示所有用户的帖子和对这些帖子的评论(无论哪个用户发表了评论),在 中views/user/show.html.erb,从帖子和评论之间的明显关联中访问这些评论是相当容易的。

这将为我提供对这些帖子的所有评论,而不仅仅是用户发表的评论,这正是我想要的。

现在,我在这个应用程序中使用了活动模型序列化程序,在用户序列化程序中,我可以声明与帖子的关联has_many :posts,然后如果我去 localhost:3000/user/1.json,我会看到用户详细信息和帖子。has_many :comments但是,除非我只想要该用户发表的评论,否则我无法声明。但是,我想要对这些帖子的所有评论,而不管发布它们的用户是谁。

我如何使用主动模型序列化器来实现这一点?

0 投票
2 回答
2505 浏览

ruby-on-rails - 使用 Ember 的 Active Model Serializer `embed :ids, include: true` 用例

我的 ember 路由器设置了这种类型的父/子资源。

在后端(即 Rails)中,City.rb 和 Restaurant.rb 之间存在 has_many 关系,在 City 的 Active Model Serializer (AMS) 中,我还声明了与 Restaurants 的 has_many 关系。在 AMS 中,当声明关系时,它为您提供了执行此类操作的选项

所以只包括子模型(在我的例子中是餐厅)的“id”。我没有那样做。因此,当我对 City.rb 模型执行 findAll ajax 请求时,我会获取每个城市的所有 Restaurant 属性。这意味着在城市模板中,我可以显示每家餐厅的名称等,因为所有餐厅数据都在手边

但是,我已经读到 Ember 中的最佳实践实际上只为儿童模型(在我的例子中是餐厅)嵌入 id embed :ids, include: true,这意味着餐厅名称在上述模板中不可用。

我的问题是,如果我这样做embed :ids, include: true,当我为每个城市显示模板时,只有现在有什么用id?这意味着我无法显示每个城市的餐厅列表,如果我想显示它们,我必须单独查询每个城市。

如果这是正确的,那么embed :ids, include: true在带有 Ember 的 Active Model Serializer 中使用的用例是什么。有没有办法在这种情况下使用它来提高代码效率?

代码

我的城市 findAll 方法

城市模板_

还显示餐厅的城市模板

0 投票
1 回答
865 浏览

ruby-on-rails - Rails 和 Active Model Serializers:防止双重 JSON 编码和转义字符 (\)

在我的一个控制器中,我手动组装了我的 JSON 数据,以便能够使用 AMS 自定义序列化程序:

它可以工作,但问题是它编码了两倍的 Moos 和 Foos,并且呈现的 JSON 有很多转义字符:

有没有办法防止这种情况?

0 投票
2 回答
1660 浏览

authentication - Ember-Data + AMS => JSON 或 HTTP 标头的 Ember.js 身份验证令牌?

语境:

我有一个 Ember.js 1.1.0-beta.1 应用程序,它与 Rails-API 服务器(Rails 4)交换 JSON 数据。JSON 数据交换是通过 Ember-Data 1.0.0-beta.2 和 Active Model Serializers 0.8.1 (AMS) 完成的。我正在为 Ember-Data 和 AMS 使用默认推荐配置,并且符合 JSON-API 规范。

在任何给定的 RESTful 调用中,客户端都会将当前身份验证令牌传递给服务器。身份验证令牌经过验证并停用,并生成新的身份验证令牌并将其发送回客户端。因此,每个 RESTful 调用都接受请求中的身份验证令牌,并在响应中提供新的身份验证令牌,客户端可以缓存并用于下一次 RESTful 调用。

问题:

我在每个请求和响应中将身份验证令牌放在哪里?

它应该是请求和响应中每个对象的 JSON 的一部分吗?如果是这样,令牌放在现有对象的 JSON 结构中的什么位置(与身份验证无关)?

还是应该将它们放在每个请求和响应对象的 HTTP 标头中?

人们最终可能希望在新的 Ember Guides Cookbook 中找到“The Ember Way”是什么?

更多背景:

我已经熟悉以下链接:

...并且我正在寻找超越这些的答案,并且特定于 Ember-Data + AMS。

除了需要通过 Ember-Data 在响应中将新令牌传递回客户端之外,假设我的客户端代码在其他方面类似于 GitHub 上的 @machty Embercast 示例:https ://github.com/embercasts/authentication -part-2/blob/master/public/js/app.js

非常感谢!