ruby 如何使用samw Rails表单一次修改多个记录?

2admgd59  于 2023-06-22  发布在  Ruby
关注(0)|答案(1)|浏览(95)

在Rails中,我需要在同一个表单中一次更新n条记录(每条记录都有你要更新的日期字段)。为此,我尝试使用这个def:

def marcado 
    set_previsao
    confs = @previsao.previtems.where(status: "Confirmado").index_by{|previtem| previtem[:id]}
     confs.each do |id, attributes|
      previtem = @previsao.previtems.find(id)
      previtem.update(attributes)
   end

这样做,它会返回以下错误消息:
参数错误:在分配属性时,必须将散列作为参数传递。
因为confs变量是一个散列。
另外,如果我这样做:

def marcado 
    set_previsao
    confs = @previsao.previtems.where(status: "Confirmado").pluck(:id).map { |id| [id, {status: "Marcado", data_marcacao: params[:data_marcacao]}] }.to_h
     confs.each do |id, attributes|
      previtem = @previsao.previtems.find(id)
      previtem.update(attributes)
   end

使用前一个def的行,所有记录都保存为最后一个记录值。
我哪里错了?

rur96b6h

rur96b6h1#

看起来你可能没有利用某些rails特性。而且你没有真正提供足够的信息来提供最好的建议。
如果所有这些记录都属于某个主记录,那么您应该进行调查
https://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html#method-i-accepts_nested_attributes_for
如果它们与某个主记录无关,则可以查看
https://api.rubyonrails.org/classes/ActiveRecord/Persistence/ClassMethods.html#method-i-upsert

相关问题