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

ruby-on-rails - 使用 active_model_serializers 序列化权限(例如 CanCan)

如何使用 active_model_serializers 序列化权限?我无权访问模型和序列化程序中current_usercan?方法。

0 投票
1 回答
1183 浏览

ruby-on-rails - josevalim / active_model_serializers 控制器参数错误

我正在玩 Jose Valim 的 active_model_serializers Gem。

我正在尝试在我的控制器中调用自定义序列化程序,但它看起来:json没有ActiveModel::ArraySerializer按应有的方式使用。

当我default active_model_serializer在控制器中定义时,序列化程序工作正常;但是,当我在控制器中调用这样的自定义时:

我收到以下错误:

我正在使用 Ruby 1.9.2 和 Rails 3.2.7。感谢任何帮助,因为我需要为任何给定模型创建一些不同的序列化程序。

谢谢!

0 投票
2 回答
3161 浏览

ember.js - 序列化日期属性

我正在使用 active_model_serializers 和 ember.js。我的一个模型有一个日期属性。在 Rails 中,日期属性以“YYYY-MM-DD”的格式序列化。

问题; 当 ember-data 使用 javascript Date 构造函数反序列化日期时,它假定一个“不正确的”时区。

*不正确不是最好的词,但它是不正确的,因为我希望它默认为当前时区。DS.Model 日期属性解析日期 (YYYY-MM-DD) 不正确

我认为 active_model_serializer 应该采用 date 属性并将其转换为 iso8601 格式。

有没有办法告诉 active_model_serializers 如何序列化所有日期对象?还是我应该在 javascript 中修复时区问题?

0 投票
3 回答
21324 浏览

ruby-on-rails - 活动模型序列化器 belongs_to

这个问题与 AMS 0.8 相关

我有两个模型:

和两个序列化器:

当 aUserCombination被序列化时,我想嵌入整个主题子树。

当我尝试使用此设置时,我收到此错误:

我尝试将其更改UserCombinationSerializer为:

在这种情况下,我没有收到任何错误,但是以subject错误的方式序列化了 - 不使用SubjectSerializer.

我的问题:

  1. 我不应该能够在序列化程序中使用belongs_to 关系吗?
  2. 如果没有 - 我怎样才能获得想要的行为 - 使用 SubjectSerializer 嵌入主题树?
0 投票
1 回答
362 浏览

ember.js - 我们可以对 Ember 数据使用多态关系吗?

我们有多种类型的“小部件”,可以在组中使用,并且在 Rails 中,我们有一个多态关系来返回所有小部件,无论类型如何。

例如,我们可以调用@group.widgets 来返回所有不同类型的小部件,而不管可能正在使用什么。

如果我将 polymorphic => true 添加到序列化程序。例如:

我似乎得到了一个递归循环,它以SystemStackError (stack level too deep)结束。

我在这里错过了一个技巧,还是这只是一些还不能完成的事情?

谢谢,丹

0 投票
2 回答
4386 浏览

ruby-on-rails - 在 Rails 中使用 ActiveModel::Serializer - JSON 数据在 json 和 index 响应之间存在差异

我正在使用active_model_serializersgem 来控制序列化数据,并看到一些奇怪的行为。我的代码如下所示:

模型和序列化器

控制器

视图(app/views/users/index.html.erb)

现在,当我渲染视图时,我看到full_name我的数据中缺少该属性(通过模型中的方法生成):

当我访问/users.json(我resources :usersroutes.rb文件中有)时,我看到了正确的 JSON:

我看不出我可能做错了什么——任何输入都会有所帮助。谢谢。

0 投票
1 回答
3091 浏览

ruby-on-rails - Rails/Ember - active_model_serializer - 侧载时未定义的方法“对象”

我正在尝试为 Ember 应用程序在 active_model_serializer 中侧载数据,并在尝试包含对象时得到 NoMethodError:

#Email:0x00000100d33d20 的未定义方法“对象”

它仅在 :include => true 设置时发生,如下所示:

我的模型如下所示:

我的控制器如下所示:

提前致谢。

0 投票
1 回答
1544 浏览

ruby-on-rails - ActiveModel::Serializer:如何从分层 Rails 模型中收集验证错误?

我有一个分层的 Rails 模型。验证后,模型的每个实例都有一个errors属性,该属性是验证后的错误数组。这些错误需要序列化为与生成错误的主模型的层次结构相匹配的 JSON 对象。有没有办法利用ActiveModel::Serializer代码,以便我可以使用已在ActiveModel::Serializer子类中配置的关联,以便我可以遍历层次模型并将错误提取到对象中以作为 JSON 发送给客户端?

这是我的分层模型:

当样本值超出范围时,我想生成以下 JSON

也许ActiveModel::Serializer子类可以直接做到这一点。但如果没有,当我创建错误对象时,是否有某种方法可以检查序列化程序中定义的关联?

0 投票
4 回答
4578 浏览

ruby-on-rails - 具有嵌入式 ID 和侧载的 Ember-Data 和 Active Model Serializers 的 has_many 配置

我知道 Ember-Data 在设计上应该与 Active Model Serializers 兼容,但它们似乎在序列化has_many与嵌入式 ID 的关系方面不同步。

例如,序列化器

生成 JSON

但是 Ember Data 中的默认配置,

期望注释关联在comments: [...]没有_ids后缀的情况下被序列化(请参阅Ember.js 指南的 REST 适配器部分的关系子部分)。

我尝试了以下解决方法:

它可以工作,但是embed :ids, :include => true现在添加以启用侧面加载什么都不做,因为 AMS 不知道它是一个关联。

编辑:我正在使用active_model_serializers (0.6.0)gem 和 Ember-Data 修订版 11

0 投票
3 回答
948 浏览

ruby-on-rails - Rails + Ember.js + 设计自由记者应用程序 - 数据范围

抱歉,我在 ember.js-land 待了这么久,我在摸索 Rails + active_model_serializers JSON api 基础知识。

因此,假设我是一名自由记者,正在构建一个应用程序,作者可以通过单个用户帐户将文章发布到不同的公司特定网站。

我正在使用 Rails 3+、Devise、Active_Model_Serializers、Ember-Data 和 Ember.js。

我想设置一个流程,用户访问该站点,登录(非常容易使用设计)并被重定向到一个 Rails 页面,他可以在其中选择他想去的公司的仪表板(只需单击一个链接) .

现在是棘手的部分。当他单击特定公司的链接时,他应该被引导到一个 Rails 视图,该视图包含一个 ember 应用程序,其序列化范围设置为 current_company_membership 或 current_company 而不仅仅是 current_user。

如何创建一个 rails 或 active_model_serializers 方法,将数据范围仅限于 current_company_membership 指定的 current_company,然后将此数据传递给 ember 应用程序?


另外,作为奖励,我需要 current_user 的姓名和电子邮件地址 - 我如何将这些信息也传递给 ember 应用程序?我看过这个花花公子的文章,但是在尝试仅通过 company_membership 而不是 current_user 来确定数据范围时,无法使其正常工作。

任何帮助都是极好的!如果需要,我会添加更多细节和代码,但我觉得我在这里忘记了一些非常简单的事情。