Rails,使用集合模型在单个表单上一次更新多个记录

时间:2016-08-19 15:41:42

标签: ruby-on-rails

我正在尝试在rails中更新单个表单上的多个记录。

我看过railscast #165,但我试图以更干净的方式做到这一点。

有没有办法创建另一个模型,一种集合模型,并使用accepts_nested_attributes一次更新多个记录?

例如,会有一个普通的ProductModel,然后是ProductCollections模型。 ProductCollections模型会有很多产品,而且它也会接受accept_nested_attributes_for产品。

我遇到了一个问题,因为我试图在没有为DB中的ProductCollections模型创建表的情况下这样做。我也想知道路由应该如何工作。

2 个答案:

答案 0 :(得分:0)

有一种简单的方法: (按照railscast中的示例,使用较新版本的Rails)

Product.where(id: params[:product_ids]).update_all(discontinued: true)

它比以前版本的API更具可读性。您首先使用典型的搜索API选择产品,然后将update_all应用于该查询的结果。

ProductCollection是具有ProductModel类的给定查询的结果。它不需要自己的数据库表。

答案 1 :(得分:0)

基于Sward's评论,不需要新模型。由于每个产品都有父(商店),我可以将Store模型与accepts_nested_attributes_for :products一起使用。

我刚刚为产品创建了一个单独的集合控制器(用于处理传入的表单提交和重定向)以及一个带有fields_for表单的视图,可以一次更新多个记录。