我正在尝试将ActiveModel::Serializer与PostgreSQL数据库结合使用。
我遇到的问题是每当我在序列化程序中包含json
类型列时,我得到:
SystemStackError (stack level too deep):
actionpack (4.0.0) lib/action_dispatch/middleware/reloader.rb:70
我不想this,因为我需要在返回之前访问数据。
来自schema.rb
:
create_table "jobs", force: true do |t|
t.integer "user_id"
t.string "tool"
t.string "name"
t.json "options"
t.integer "status"
t.string "version"
t.datetime "created_at"
t.datetime "updated_at"
end
job_serializer.rb
:
class JobSerializer < ApplicationSerializer
attributes :id, :tool, :name, :status, :options, :version, :created_at
has_many :inputs, serializer: FileLinkSerializer
end
如果从属性中删除:options
,但在上面包含它时崩溃,则可以正常工作。
答案 0 :(得分:1)
问题在于有一个名为options
的字段。我把这个字段包裹在一个名为tool_options
的字段中,一切正常。
class JobSerializer < ApplicationSerializer
attributes :id, :tool, :name, :status, :tool_options, :version, :created_at
end
class Job < ActiveRecord::Base
def tool_options
options
end
end
(实际上我会改变我的架构,因为它不会太晚。)