繁体   English   中英

未初始化常量 API::V1::ApplicationSerializer

[英]uninitialized constant API::V1::ApplicationSerializer

我开始使用gem 'active_model_serializers', '~> 0.10.0' 按照文档执行。

我有以下关系。

landmark has_many concerns
concern belongs_to landmark
concern has_many comments 

我在app/serializers/api/application_serializer.rb创建了一个ApplicationSerializer

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

在上面的代码中,如果我用ActiveModel::Serializer替换ApplicationSerializer它可以正常工作,但是我丢失了ApplicationSerializer中定义的通用代码。

看起来像一个自动加载问题。 ApplicationSerializer应该在它自己的文件<serializers directory>/api/application_serializer.rb (确保在app中创建目录后重新启动 server/spring 以便它们被自动加载器拾取)

您也可以使用绝对 class 名称来引用它: ::API::ApplicationSerializer

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM