CSV上传的最佳RESTful路由设计

时间:2014-07-08 20:41:58

标签: ruby-on-rails rest routing

当允许用户选择在/new填写表单或上传包含多个对象的csv file数据时,RESTful路由设计的最佳做法是什么?

为了简化控制器操作,我宁愿添加两条新路由,例如get :uploadpost :create_multiple,以上传包含多个实体对象数据的CSV文件。

这是一个足够简单的情况,但我很好奇是否有人已经给它足够的思考来决定一个能够产生简单且易于测试的控制器动作的智能模式?

1 个答案:

答案 0 :(得分:0)

<强>的RESTful

我认为您需要超越CSV并考虑系统如何运作的资源结构 - 如果您将CSV文件视为Paperclip附件,设置所需路线等的过程仍然相同 -

#config/routes.rb
resources :controller, path_names: {new: "upload"} do
    collection do
        post :create_multiple
    end
end

这将为您提供以下控制器设置:

#app/controllers/your_controller.rb
Class YourController < ApplicationController

    before_action :set_record, except: [:index, :new, :create]
    def new
       @model = Model.new
    end

    def create
       @model = Model.new(model_params)
       @model.save
    end

    def edit
    end

    def update
        @model.update(model_params)
    end

    def index
        @models = Model.all
    end

    def destroy
       @model.destroy
    end

    def show
    end

    def create_multiple
    end 

    private

    def models_params
        parmas.require(:model).permit(:params, :for, :object)
    end

    def set_record
        @model = Model.find parmas[:id]
    end
end

如果您想在后端操作CSV文件,您可以在模型中执行此操作 - 使用instance / class方法或使用其他方法依赖