我在两个模型,集合和作品之间建立了简单的关系。一个集合有很多作品,一件作品属于一个集合。
收集序列化程序:
#collection_serializer.rb
class CollectionSerializer < ActiveModel::Serializer
self.root = true
attributes :id, :title
has_many :works, embed: :ids, embed_in_root: true, key: :works
has_one :user, embed: :id, key: :user
end
工作序列化程序
#work_serializer.rb
class WorkSerializer < ActiveModel::Serializer
attributes :id, :title, :min_year, :max_year, :longitude, :latitude, :circa, :place, :created_at, :updated_at
has_one :collection, embed: :id, embed_in_root: false
end
当我调用集合时,我从我的应用程序(Ember)调用集合,我得到SystemStackError - 堆栈级别太深。这是Grape中用来调用集合的控制器:
module API
module V1
class Collections < Grape::API
include API::V1::Defaults
resource :collections do
desc "Return a collection"
params do
requires :id, type: String, desc: "ID of the collection"
end
get ":id", root: "collection" do
Collection.where(id: permitted_params[:id]).first!
end
end
end
end
end
这似乎很简单,但我可以弄清楚这个错误。谢谢!
答案 0 :(得分:0)
我建议您为preg_replace("/<br.*?\/>/", "<br />", $the_string);
创建一个新的序列化程序,但不包括Work
。
然后在你的工作序列化器中:
collection