我有3个模型Persona,Assertion和类P2c继承自Assertion类
class Persona < ActiveRecord::Base
# create_table "personas", :force => true do |t|
# t.text "name", :null => false
# t.text "description"
# t.datetime "last_change", :null => false
# end
has_many :p2cs
end
class Assertion < ActiveRecord::Base
# create table "assertions", :primary_key => "id", :force => true do |t|
# t.text "rationale",
# end
end
class P2c < Assertion
#create_table "p2cs", :primary_key => "assertion_ptr_id", :force => true do |t|
# t.integer "persona_id", :null => false
# end
belongs_to :persona, :class_name => "Persona", :foreign_key => "persona_id"
end
我需要帮助来使用gem active_model_serializers
编写序列化类答案 0 :(得分:1)
我不明白你的问题。但我想你的STI存在问题。 RailsCast 409中没有解释STI和多态性,但他们在文档中讨论了它。
关键是您必须指定序列化程序。 可以说我有一个
class Parent < ActiveRecord::Base
class Child < Parent
我会有以下show / index操作:
def index
render json: children, each_serializer: ParentSerializer
end
def show
render json: child, serializer: ParentSerializer
end
答案 1 :(得分:0)
你的问题不明确,但我想你想在你的角色中加入p2cs。 as_json
是在rails
class Personna < ActiveRecord::Base
def as_json( options={} )
super( {include: [:p2cs]}.merge options )
end
end
如果您的问题是要为P2c
和Assertion
实施不同的行为,请根据需要在每个类中实施as_json
。
注意您可能会发现有关json序列化的博文有趣,因为它澄清了as_json
和to_json
之间的区别:http://jonathanjulian.com/2010/04/rails-to_json-or-as_json/
我们需要将json序列化分为两个步骤:构建属性的ruby哈希(as_json),然后将其序列化(to_json)。这种方式继承和重载更容易,因为我们可以只处理ruby哈希。