问题标签 [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.
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#show
json 响应。它不断添加我不想要的created_at
and属性。updated_at
/users/1.json
我尝试了多种列出:role
属性的方法,user_serializer.rb
包括下面的代码。不幸的是,这不起作用。
user_serializer.rb
users_controller.rb - 显示动作
用户.rb
ruby-on-rails - 与 Active Model Serializers 的急切负载关联
背景
我有一个具有深度嵌套关联的 Rails 应用程序。
我正在使用Active Model Serializer来构建 API。
在客户端,我想一次性加载一张考勤卡及其所有关联。
目前我的序列化程序看起来像这样,
问题
这一切都可以找到,除了没有任何东西被急切加载。所以它最终会为每个请求对数据库进行大量调用。对于每一周,它都会单独请求该周的天数。并且对于每一天,它都会单独请求它的 work_periods、小计和调整。
ruby-on-rails - 如何对 Rails Active Model 序列化程序的响应进行排序
奇怪的是,我没有找到任何关于这个主题的东西......
如何对 Rails 服务器提供的 JSON 进行排序?我目前正在使用 ActiveModel 序列化器:
我想对嵌入的places
.
我找到的唯一答案是这个 SO question,但它解释了序列化程序默认如何排序,而不是我如何排序。
ruby-on-rails - Rails Active Model Serializer - 需要在发送之前操作渲染的 json
所以这是一个有趣的——我有一个控制器方法,它根据一些规则返回一个“可恢复”对象的列表。但是,有一些条件我不能包含在单个数据库查询中——所以,我想渲染出“基本”可恢复列表,然后在返回客户端之前对其运行过滤器。
换句话说,我想做的是:
无论如何,SessionResumeSerializer.new(sessions).as_json
完全不起作用,抛出一个:
NoMethodError: undefined method 'read_attribute_for_serialization' for <ActiveRecord::Relation:0x007ffa164b0ce0>
错误。
我显然对这应该如何工作感到困惑——初始化程序会获取一个关系并将其呈现出来,这似乎完全直观。
有没有更好的方法来解决这个问题?
ruby-on-rails-3 - 活动模型序列化器和多个元值
我正在查看 Active Model Serializer 的 README 并查看以下示例:
但我希望能够输出:
我猜我需要有两个元对象。这可能吗?我该怎么做?
ruby-on-rails - 使用 ActiveModel::Serializer 用属性序列化数组/关系
我想使用 Active Model Serializers 序列化关系,并且我想为此关系设置一些“全局”属性(例如计数):
我怎么能那样做?
ruby-on-rails - 与活动模型序列化程序的复杂关联
为了简单起见,我写了这个问题,就像写博客应用程序一样,但实际上它是一个完全不同的应用程序。我的 users_controller.rb 中有一个与此类似的显示操作。
每个post
也有很多comments
。如果我想显示所有用户的帖子和对这些帖子的评论(无论哪个用户发表了评论),在 中views/user/show.html.erb
,从帖子和评论之间的明显关联中访问这些评论是相当容易的。
这将为我提供对这些帖子的所有评论,而不仅仅是用户发表的评论,这正是我想要的。
现在,我在这个应用程序中使用了活动模型序列化程序,在用户序列化程序中,我可以声明与帖子的关联has_many :posts
,然后如果我去 localhost:3000/user/1.json,我会看到用户详细信息和帖子。has_many :comments
但是,除非我只想要该用户发表的评论,否则我无法声明。但是,我想要对这些帖子的所有评论,而不管发布它们的用户是谁。
我如何使用主动模型序列化器来实现这一点?
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 方法
城市模板_
还显示餐厅的城市模板
ruby-on-rails - Rails 和 Active Model Serializers:防止双重 JSON 编码和转义字符 (\)
在我的一个控制器中,我手动组装了我的 JSON 数据,以便能够使用 AMS 自定义序列化程序:
它可以工作,但问题是它编码了两倍的 Moos 和 Foos,并且呈现的 JSON 有很多转义字符:
有没有办法防止这种情况?
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”是什么?
更多背景:
我已经熟悉以下链接:
- @machty 2 Embercast:http ://www.embercasts.com/episodes/client-side-authentication-part-2
- @wycats 推文:https ://twitter.com/wycats/status/376495062709854209
- @cavneb 3 篇博文:http ://coderberry.me/blog/2013/07/08/authentication-with-emberjs-part-1
- @simplabs 博客文章:http ://log.simplabs.com/post/53016599611/authentication-in-ember-js
...并且我正在寻找超越这些的答案,并且特定于 Ember-Data + AMS。
除了需要通过 Ember-Data 在响应中将新令牌传递回客户端之外,假设我的客户端代码在其他方面类似于 GitHub 上的 @machty Embercast 示例:https ://github.com/embercasts/authentication -part-2/blob/master/public/js/app.js
非常感谢!