Я начал использовать gem 'active_model_serializers', '~> 0.10.0'
. Следующий это документ для реализации.
У меня есть следующие отношения.
landmark has_many concerns
concern belongs_to landmark
concern has_many comments
Я создал ApplicationSerializer
в app/serializers/api/application_serializer.rb
module API
class ApplicationSerializer < ActiveModel::Serializer
# some commode here
end
end
Мой концерн_сериализатор содержит:
# ===> Does not work <=====
module API::V1
class ConcernSerializer < ApplicationSerializer
attributes :id, :body
has_many :comments
belongs_to :landmark
class CommentSerializer < ApplicationSerializer
attributes :id, :body
end
class LandmarkSerializer < ApplicationSerializer
attributes :id, :short_address
end
end
end
# ====> However, this works <====
module API::V1
class ConcernSerializer < ApplicationSerializer
attributes :id, :body
has_many :comments
class CommentSerializer < ActiveModel::Serializer
attributes :id, :body
end
end
end
# ===> Does not work again<=====
module API::V1
class ConcernSerializer < ApplicationSerializer
attributes :id, :body
has_many :comments
belongs_to :landmark
class CommentSerializer < ActiveModel::Serializer
attributes :id, :body
end
class LandmarkSerializer < ActiveModel::Serializer
attributes :id, :short_address
end
end
end
В приведенном выше коде, если я заменю ApplicationSerializer
на ActiveModel::Serializer
, он работает нормально, но я теряю общий код, определенный в ApplicationSerializer
.