在rails中以RESTful方式同时编辑多个数据库条目

时间:2016-09-02 06:49:54

标签: ruby-on-rails ruby database rest

要配置我的应用的管理设置,我制作了管理员控制器和AdminConfig模型。

Admin控制器有几个类别(系统,文件,文件夹......),我想通过在db中设置一个类别列,轻松地在AdminConfig模型中将它们分开。 但我真的想以RESTful的方式做这件事,我不知道怎么用rails做。

Rails想要分别编辑每个数据库行,但我想将它们分组。

示例:在我拥有的文件类别上:

  • 寻找
  • 的扩展名
  • exif标签忽略
  • 子文件夹深度

每个人都是AdminConfig模型中的一个单独条目:

  • 名称|值|类
  • 扩展名| .jpg,.png,.avi |文件
  • exif_t​​ag |零|文件
  • subfolder_depth | 3 |文件

(抱歉表不在这里工作)

所以我想在页面上显示所有这些内容,当我编辑它们时,我想要全部更新它们。但我不知道如何正确地做到这一点。

我可以按照我的方式做到这一点或修改数据库所以一行==一个类别,但这不是我想要实现的方式,因为在以后添加更多设置会更加困难。

1 个答案:

答案 0 :(得分:0)

如果所有这些设置都属于同一个集合(例如几个ExifTag模型) - 您可以修补一个集合,这在REST中是不被禁止的(尽管您必须定义您的自己动作,没有预定义的用于在Rails中修补集合的内容。)

PATCH [{id: 3, name: 'Paul'}, {id: 4, name: 'Dan'}]

如果所有设置都属于一个模型 - 您可以修补该模型并将数据作为嵌套属性传递给其他模型,Rails允许您这样做。

PATCH {id: 1, hobbies_attributes: [{id: 1, name: 'Hiking'}], house_attributes: { location_attributes: { city: 'Vancouver' }}

如果不是这些,就像你想要修补2个彼此无关的不同模型那么 - 那么健康"在REST中这样做的方法。我可以建议使用一些花哨的前端,它会在编辑时向不同的路径发送不同的请求,更新不同的模型;那将是最干净的方式。