我在从jbuilder迁移到active_model_serializers(AMS v0.9)时遇到了一些麻烦。要构造previus json,我需要将另一个对象作为参数传递给我的序列化器。
我已经看到有一些选择,但没有什么对我有用。
这是我的控制器,我称之为序列化器:
@profile
@couple
,@partner
和before_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
。然而它总是抛出空。
我在铁轨上的红宝石相对较新。那么有人可以帮助我吗?
请注意,我只发布了要讨论的代码的基本部分。
干杯
答案 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})