我正在尝试在rails中更新单个表单上的多个记录。
我看过railscast #165,但我试图以更干净的方式做到这一点。
有没有办法创建另一个模型,一种集合模型,并使用accepts_nested_attributes一次更新多个记录?
例如,会有一个普通的ProductModel,然后是ProductCollections模型。 ProductCollections模型会有很多产品,而且它也会接受accept_nested_attributes_for产品。
我遇到了一个问题,因为我试图在没有为DB中的ProductCollections模型创建表的情况下这样做。我也想知道路由应该如何工作。
答案 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
表单的视图,可以一次更新多个记录。