0

私は3つのモデルペルソナ、アサーションを持っており、クラスP2cはクラスアサーションから継承されています

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 を使用してシリアル化クラスを作成するのに助けが必要です

4

2 に答える 2

0

あなたの質問は明確ではありませんが、ペルソナに p2cs を含めたいと思います。as_jsonRailsでデフォルトのJSONシリアル化を実装するための推奨される方法です

class Personna < ActiveRecord::Base
  def as_json( options={} )
    super( {include: [:p2cs]}.merge options )
  end
end

P2c問題がとの異なる動作を実装することである場合は、各クラスで必要に応じてAssertion実装するだけです。as_json

as_jsonとの違いを明確にしているため、json シリアライゼーションに関するブログ投稿が興味深いことに気付くかもしれませto_json

アイデアは、json シリアライゼーションを 2 つのステップに分割する必要があるということです。属性の ruby​​ ハッシュを構築し (as_json)、それをシリアライズします (to_json)。この方法では、Ruby ハッシュを処理するだけで済むため、継承とオーバーロードが簡単になります。

于 2013-03-14T08:13:14.857 に答える