如何将ActiveModel :: Serializer与PostgreSQL JSON列一起使用

时间:2014-09-15 14:25:38

标签: ruby-on-rails json postgresql active-model-serializers

我正在尝试将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,但在上面包含它时崩溃,则可以正常工作。

1 个答案:

答案 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

(实际上我会改变我的架构,因为它不会太晚。)