RESTful嵌套传统路由

时间:2010-10-14 05:21:03

标签: ruby-on-rails ruby rest inherited-resources

我有模特:

  • User -1---n- Transaction(amount,description, date)
  • User -1---n- TransactionImport -1---n- TransactonImportField(name,value)

(个人费用跟踪应用)。

我想要实现的目标是:

  1. 用户打开URL并将CSV与事务列表粘贴。
  2. 用户提交。
  3. 系统将CSV中的数据提取到TransactionImport(行)+ TransactionImportField(单元格)。
  4. 用户可以选择哪个列表示TransactionImport(Field)中导入数据的内容(金额,描述,日期)。
  5. 用户点击“保存”,系统会将TransactionImport转移到“交易”中。
  6. 我似乎无法做到的事实是,第3步创建了TransactionImport(及相关TransactionImportField)的多个记录。

    如果我们是RESTful,那么预期POST /transaction_imports?csv=abcd会产生一条记录。但代码应该是这样的:

    # TransactionImportsController
    def create
      result = TransactionImports.parse(params[:csv])
      flash[:notice] = result.message
      redirect_to transaction_imports_path
    end
    

    我可能从错误的角度接近任务,因为我认为实现不适合inherited_resources

    请问您最常见的实施方法是什么?

    谢谢,
    Dmytrii。

1 个答案:

答案 0 :(得分:1)

REST / HTTP并不期望POST只会创建一条记录。这可能是默认的rails行为,但你不应该因此而限制你的设计。