我正在尝试为我的Rails api创建一个模块结构。
这是我试图追求的结构:
/app
| api/
| v1/
| comp1/
| controller/
| model/
| serializer/
| comp2/
| --- analogous to /comp1
| v2/
| comp1/
| controller/
| model/
| serializer/
| comp2/
| --- analogous to /comp1
我该如何有效地做到这一点?
我觉得这应该是这样的:
基本控制器(app / api / v1):
class Api::V1::ApplicationController < ActionController::Base
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception
end
继承基本控制器的组件(app / api / v1 / menu / controller):
class Api::V1::Menu::Controller::MenuController < ApplicationController
def options
render json: MenuOption.all, each_serializer: Serializer::MenuOptionSerializer
end
end
这或多或少是这样做的吗?
scope module: 'api' do
scope module: 'v1' do
scope module: 'menu' do
get 'menu' => 'menu#options'
end
end
end
我问这个问题的原因是因为我曾经有类似的结构运行,但经过一段时间的铁路后,我无法为新项目做这项工作。另外,我想确保我完全理解这里发生了什么。