问题标签 [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 回答
1193 浏览

ruby-on-rails - Rails:非 ActiveRecord 模型需要包含 ActiveModel::Serializers,还是只响应 #as_json?

使用 Rails 3.2,我正在开发一个 API 支持的模型(不是 ActiveRecord)。我希望能够to_json在 Rails 控制器中调用这个模型。在阅读了一堆 ActiveModel 文档后,我仍然不清楚一件事:

给定这样的模型:

这应该按预期工作,还是我还需要包括ActiveModel::Serializers::JSON?我很难弄清楚as_json/to_json方法通常在哪里定义,以及 Rails 何时在不同情况下自动调用哪些方法......

感谢您的任何见解!

0 投票
1 回答
2873 浏览

ruby-on-rails - 如何使用 active_model_serializers 默认包含所有属性并过滤它们?

我正在使用active_model_serializers并且想找到一种方法来默认包含所有模型的属性,然后使用类似这样的东西

指定我不需要的那些。

到目前为止,除了文档中的属性之外,我还没有找到一种方法来指定导出的属性,这是通过枚举所有需要的属性来完成的:

0 投票
4 回答
18861 浏览

ruby-on-rails - 在 Active Model Serializer 中创建根节点

我的 Rails 应用程序中有一个 JSON 数组,使用 Active Model Serializer 以这种格式:

如何做到这一点,以便我删除联系人上方的一级节点使用活动模型序列化程序,如下所示:

我还想删除节点名称“联系人”。

0 投票
3 回答
1606 浏览

ember.js - 使用 Rails+active_model_serializers 在 EmberJS 中侧加载具有非标准类名的对象

我在 Rails 中有一些看起来像这样的模型:

使用这样的序列化程序:

这会生成类似于以下内容的 JSON:

问题是 Ember 无法将侧面加载的报告者和受让人 JSON 对象识别为用户对象,并且我看到以下错误:

我不想删除

来自我的 IssueSerializer,因为这样评论就不会被序列化。

我考虑过一些潜在的方法来解决这个问题:

  • 如果 ActiveModel::Serializer 的 embed 方法在其 include 选项中接受了模型列表,则可以过滤 JSON 响应以仅包含侧面加载的注释。
  • Ember 数据的模型可以配置为从“用户”、“记者”和“受让人”侧加载用户......但据我所知,它似乎只支持 sideloadAs 的一个键。
  • 不知何故忽略/禁用未知键的侧面加载错误(可能是最不理智的方法)。

我在这里缺少另一个选择吗?我想我可能需要编写一个修复程序并向 rails-api/active_model_serializers、emberjs/data 或两者提交一个拉取请求。

编辑:我的临时解决方法是将 IssueSerializer 更改为仅序列化记者和受让人的 id:

0 投票
1 回答
278 浏览

ruby-on-rails-3.2 - 自定义序列化器的输出

所以我想使用[ActiveModel::Serializer][1]最近添加到 Rails 中的新功能。

如果我这样写我的序列化程序:

我得到的 JSON 是这样的:

这与我想要的非常接近,但是在我在HERE上面放置“”评论的地方,我想要一个 JSON 包装层,所以我可以说例如my_results,然后将这三个 JSON 结果包装在它周围,就像一个数组一样,就像当我们在 JBuilder 中创建一个新元素时,我们说json.my_results

0 投票
2 回答
1054 浏览

ruby-on-rails - 在 Rails Active Model Serializer 中嵌入外键

我知道在嵌入关联时,我们可以执行以下操作

有没有办法在关联中嵌入除 id 之外的其他字段,例如 contact_id 或 task_name 作为数组而不是主键?请告诉我。

0 投票
0 回答
163 浏览

ember.js - 加载嵌入式关联仅适用于下划线名称

我有一个模型 App.Leg 有很多 App.LegPlayers:

我可以使用以下映射以嵌入式方式(仅使用 1 个 POST 请求)持久化它们:

但是从 Rails (active_models_serializers) 加载记录只能使用以下映射(或根本不使用映射):

但不是当我使用下划线版本或没有映射时,Ember 想要将 legPlayers 保留在单独的 POST 请求中。

所以我的问题是:我怎样才能让 ember 既加载腿玩家作为腿的一部分,又让腿玩家作为腿的一部分发布到服务器。因此,无需使用单独的请求。现在看来,我一次只能让一个场景工作:发布只能使用“legPlayers”,加载只能使用“leg_players”。

0 投票
2 回答
816 浏览

ruby-on-rails-3 - 将关联序列化为 ID 数组

我正在尝试将模型的关联序列化为关联模型的 ID(int)数组。我目前在 serializable_hash 中使用 :include 选项,如下所示:

至尊输出json像:

不知道为什么关联的对象有一个“关联”键;但这不是很重要;我想要的是获得如下输出:

我应该怎么做才能得到这个?

0 投票
1 回答
3320 浏览

ruby-on-rails - ActiveModel::Serializers Gem - 版本化 API 命名空间问题

我是 Rails 和模块/命名空间的新手

我的控制器的命名空间如下:

ActiveModel::Serializers 在我的 app 文件夹中放置了一个“Serializers”文件夹,我在其中创建了包含以下代码的 post_serializer.rb:

当我尝试访问 JSON 响应时,我得到:

这里有什么问题,将我的序列化程序与我的 API 版本一起命名空间的最佳方法是什么?

0 投票
2 回答
1580 浏览

ruby-on-rails - 测试用户是否刚刚使用 Devise 登录

如果他们刚刚登录,我想authentication_token在我的 JSON 响应中包含一个用户,以便我的 API 的使用者可以跟踪它并验证未来的请求。但我不想包含令牌。我正在使用 Active Model Serializers 来自定义我的 JSON 输出:

Devise 会话控制器使用respond_with resourcewhere 资源是登录用户,因此默认情况下它将使用 UserSerializer。我可以自定义设计控制器,但我更愿意使用include_authentication_token?. Devise 中是否有一些方法会在用户刚登录时返回 true(即响应来自 Devise::SessionsController)?