Ruby on rails ActiveModel::Serializers Gem-版本化API名称空间问题

Ruby on rails ActiveModel::Serializers Gem-版本化API名称空间问题,ruby-on-rails,ruby,active-model-serializers,Ruby On Rails,Ruby,Active Model Serializers,我不熟悉Rails和模块/名称空间 我的控制器的名称空间如下: module Api module V1 class PostsController < ApiController 这里的问题是什么?将序列化程序命名为API版本的最佳方法是什么?请注意,命名空间应与文件夹结构匹配: # should be in app/controllers/api/v1/posts_controller.rb module Api module V1 class PostsCont

我不熟悉Rails和模块/名称空间

我的控制器的名称空间如下:

module Api
  module V1
   class PostsController < ApiController

这里的问题是什么?将序列化程序命名为API版本的最佳方法是什么?

请注意,命名空间应与文件夹结构匹配:

# should be in app/controllers/api/v1/posts_controller.rb
module Api
  module V1
   class PostsController < ApiController

# should be in app/serializers/post_serializer.rb
class PostSerializer < ActiveModel::Serializer
#应该在app/controllers/api/v1/posts_controller.rb中
模块Api
模块V1
类PostsController

如果使用不带前缀的
后序列化程序
,则假定当前命名空间。如果您正在引用全局名称空间,请使用
::PostSerializer

,值得注意的是,ActiveModel序列化程序确实不喜欢使用名称空间,这是因为序列化程序与模型(而不是视图或端点)配对,并且模型通常不进行版本控制。我不确定我是否同意这个决定,但这是核心团队的决定。@intents有趣的是,有没有办法为它们命名名称以便进行版本控制?请确保在配置序列化程序后重新启动服务器。在我的情况下,使用
rails restart
重新启动服务器不起作用,但在服务器终端上使用ctrl+c重新启动起作用。
NameError at /api/v1/posts
uninitialized constant Api::V1::PostsController::PostSerializer
# should be in app/controllers/api/v1/posts_controller.rb
module Api
  module V1
   class PostsController < ApiController

# should be in app/serializers/post_serializer.rb
class PostSerializer < ActiveModel::Serializer