将参数传递给rails gem active_model_serializers中的序列化程序

时间:2017-01-07 20:06:21

标签: ruby-on-rails serialization active-model-serializers

我在从jbuilder迁移到active_model_serializers(AMS v0.9)时遇到了一些麻烦。要构造previus json,我需要将另一个对象作为参数传递给我的序列化器。

我已经看到有一些选择,但没有什么对我有用。

这是我的控制器,我称之为序列化器:

@profile

@couple@partnerbefore_action设置在class ProfileSerializer < ActiveModel::Serializer attributes :couple def couple return nil if serialization_options[:couple_ser].nil? serialization_options[:couple_ser] end end

这是我的序列化器:

@couple

问题在于,当我请求show方法时,我完全确定我的控制器有变量 WITH RECURSIVE chain(winner, successor, data, active) AS ( SELECT winner, successor, data, true FROM players WHERE winner = 'Sharon' UNION ALL SELECT p.winner, p.successor, p.data ,CASE WHEN p.successor = 'Meg' OR NOT c.active THEN false ELSE true END FROM players p JOIN chain c ON (p.winner = c.successor AND c.active) ) SELECT * FROM chain 。然而它总是抛出空。

我在铁轨上的红宝石相对较新。那么有人可以帮助我吗?

请注意,我只发布了要讨论的代码的基本部分。

干杯

2 个答案:

答案 0 :(得分:1)

如果您使用的是AMS v0.10,则应在序列化程序中使用“@instance_options”而不是“serialization_options”。

答案 1 :(得分:1)

对于v0.9

你尝试过这样的事吗?

ProfileSerializer
  .new(@profile, {root: false, scope: current_relationship})
  .as_json({couple_ser: @couple, partners_ser: @partners})