问题标签 [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 投票
2 回答
2207 浏览

ruby-on-rails - 在 Active_model_serializers 中访问 doorkeeper_token(或 current_user)

我正在研究用RocketPants制作的 Rails API 。对于 JSON 序列化,我使用active_model_serializers,对于 OAuth- Doorkeeper

问题在于current_userclass UserSerializer < ActiveModel::Serializer. 错误:

current_user助手使用这个片段:

并且doorkeeper_token是:

所以我发现,requestSerializer. 我怎样才能使它可访问?还是应该有其他方式来实施current_user

提前致谢

0 投票
3 回答
2325 浏览

ruby-on-rails - 活动模型序列化器中的资产管道

我试图通过包含 ActiveView::Helpers 在我的模型序列化程序输出中包含图像资产管道 url:

结果/images/posts/{id}不是资产管道路径的有效路径,即。/assets/images/posts/{id}. 如何在我的序列化程序输出中包含有效的资产管道路径?

0 投票
1 回答
353 浏览

ruby-on-rails - Ember-Data beta 3 并保存 hasMany 关系和 Rails 的另外一条记录

我正在使用 Rails 4、Ember 1.2.0 和 Ember Data 1.0.0-beta.3DS.ActiveModelSerializer。

我无法保存具有“有很多”关系的新记录。应该创建两个模型记录,但只能由一个 POST 请求创建。

我有 2 个模型,如下所示:

我的新路线创建支持案例和支持案例按摩:

我的新表单是这样的:(不知道能不能更简单的绑定一个子属性?)

控制器中的“创建”操作:

对服务器的POST请求仅发送“支持案例”!!

如何发送附加记录“支持案例消息”和关系?

0 投票
1 回答
875 浏览

ruby-on-rails - RocketPants 和 ActiveModelSerializers 自定义序列化器

妈的,又是我……

RocketPants来自git的引用:

支持active_model_serializers- 如果您想使用 ActiveModelSerializers,我们会处理它。更好的是,在您的公开调用中,:serializer按预期通过,我们会自动为您调用它。

所以这就是我尝试做的:

这就是我在以下位置实现序列化程序的方式user_serializer.rb

expose不带serializer选项使用是根据UserSerializer. 尝试使用UserJustNameSerializer会出现此错误:

所以问题是:如何正确地显示RocketPants我的序列化器的方式?现在它试图在 UsersController 中找到它。

0 投票
1 回答
320 浏览

ruby-on-rails - 与 ember.js 概念作斗争 - 大量数据

我正在考虑将 Ember.js 用于新的 Rails 支持的应用程序(使用 Active Model Serializers)。我正在努力理解这个框架,所以这可能是一个新手问题。

我的数据结构是这样的(简化):

在“活动日”内可能有数千个活动(在一个活动内有数十名参与者及其所有数据)。

似乎“错误”的是,当我想获取事件日列表时,我加载了一些 JSON,其中不仅包含 EventDays,还包含所有事件(然后是其中所有内容的所有数据)......基本上,它会加载整棵树!

我认为我可以通过对操作使用自定义序列化程序来解决这个问题,但是,在某些时候我需要获取数据,而 Ember 似乎再也不会调用服务器了。

因此,如果我加载 EventDays 并且其中没有事件数据,则当我单击“显示”方法时,Ember 永远不会调用服务器来更新 EventDay 对象。

我不知道我在这里是否清楚。我希望在这方面领先于我的人能够理解我在做什么!

真的,我认为它归结为2个问题:

1)如何正确过滤请求信息,以便只填写本地对象(即在调用索引方法时我需要一个没有孩子的事件日列表,但在调用显示方法时我需要一个活动日充满了下一个级别)

2) 如何让 Ember 在适当的时候“重新加载”一个对象以填写适当的内容

也许我看错了 - 错过了像 Ember 这样的东西 - 如果是这样,我欢迎指向适当教程的指针,但我找不到任何东西(即使在 Ember 网站上)解释除了加载整个文件之外如何做任何事情一下子树。使用 Gigs 数据,这似乎很慢,绝对是浏览器杀手,而且完全是错误的。

感谢 StackOverflow 兄弟帮助我学习!

编辑

由于某种原因我立即被否决了,我将添加代码:

客户端:

服务器端:

编辑 2

在 kertap 的建议之后,我添加了 async 属性并更新了上面的序列化程序代码。

json在这里:

值得注意的是,如果我不使用key: :events序列化程序中的参数,事情会返回为"event_ids": [1,2,3,4]which,您会认为是正确的,但会导致 Ember 看不到事件。

另外值得注意的是,如果我这样做:

然后什么都不起作用!我明白了Error while loading route: Error: Assertion Failed: The response from a findAll must be an Array, not undefined

我真的不认为让 Ember 和 Rails 的基本接线工作起来这么难......

0 投票
1 回答
2478 浏览

ruby-on-rails - 主动模型序列化器和自定义 JSON 结构

我正在尝试将 Active Model Serializer gem 与我的 API 一起使用,尽管我正在努力解决我认为非常简单的事情。

我所有的 JSON 响应都采用包装格式,每个响应都具有顶级消息和状态属性,数据位于内容属性中。每个 JSON 响应都遵循这种格式。

例子

“内容”属性的内容是我想放置序列化程序输出的地方。我的文章列表等。

我无法弄清楚如何做到这一点?

任何帮助将不胜感激。

0 投票
2 回答
1524 浏览

json - 渲染 json 时没有调用 ActiveModel::Serializer?

我正在尝试在 Rails 4.0.0 中使用 active_model_serializers 来序列化我的 json 响应。但是,当我使用 AMS 类时,似乎根本没有被调用/使用

我不确定是否存在一些配置问题,或者我是否错误地使用了命名空间。

Gemfile 有:

控制器(在 app/controllers/api/v1/users_controller.rb 中):

UserSerializer(在 app/serializers/user_serializer.rb 中)

但在 json 响应中,我仍然看到完整的对象,即

我已经尝试了从显式调用render json: user, serializer: UserSerializer到将序列化程序命名空间到 API::V1 的所有方法,结果是一样的。我在这里错过了什么吗?

编辑BaseController:这是通过让我继承ActionController::Base而不是修复的ActionController::Metal。不过,不完全确定缺少什么ActionController::Metal

0 投票
0 回答
709 浏览

ruby-on-rails - 活动模型序列化器中的缓存会增加响应时间

我正在尝试缓存一个序列化程序,但缓存的一个问题是它会减慢响应时间。

序列化器看起来像

cache_key像这样在课堂上添加了一个

并在控制器中

问题是这个实现会减慢控制器的速度,尽管缓存命中......

如果没有缓存实现,相同的请求会在 29 毫秒内返回

有什么想法会出错吗?

object.cache_key返回一个一致的缓存键,当某些无效属性更改时该键失效...

序列化程序还返回一个一致的缓存键......并且找到了该缓存版本。如果我将 cache_key 委托给对象...未加载侧载关系(所有者,帖子)...响应不包含它们?

0 投票
1 回答
740 浏览

memcached - 在活动模型序列化程序中缓存关联

目前,我有以下序列化程序:

由于各种原因,我需要在序列化我的用户模型时序列化所有关联的配置文件、页面和帖子。不幸的是,这会导致一个相当大的 JSON 哈希值难以有效缓存——我的本地 memcached 服务器只能存储大约 75 个序列化用户。有没有办法设置序列化程序,这样我就不用缓存整个用户模型 JSON 的输出,而是只缓存 JSON 的唯一部分并提交另一个缓存提取来检索相关配置文件、页面和的序列化数据帖子?

0 投票
4 回答
7210 浏览

ruby-on-rails - 活动模型序列化器:在 ArraySerializer 的根之外添加额外信息

假设我有一个模型User和一个序列化UserSerializer < ActiveModel::Serializer器,以及一个如下所示的控制器:

现在,如果我访问/users,我将收到如下所示的 JSON 响应:

但是,如果我想在 JSON 响应中包含一些与任何特定用户都不相关的额外信息怎么办?例如:

这个例子是人为的,但它很好地近似于我想要实现的目标。使用活动模型序列化程序可以做到这一点吗?(也许通过子类ActiveModel::ArraySerializer化?我想不通)。如何添加额外的根元素?