Ruby on rails 活动记录基更新方法是否已弃用?
我试图使用:update方法同时更新许多活动记录,但它们似乎更新得不好Ruby on rails 活动记录基更新方法是否已弃用?,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我试图使用:update方法同时更新许多活动记录,但它们似乎更新得不好 @drop_ship_order_line_items = DropShipOrderLineItem.update(params[:drop_ship_order_line_items].keys, params[:drop_ship_order_line_items].values).reject { |dsoli| dsoli.errors.empty? } params[:drop\u ship\u order\u
@drop_ship_order_line_items = DropShipOrderLineItem.update(params[:drop_ship_order_line_items].keys, params[:drop_ship_order_line_items].values).reject { |dsoli| dsoli.errors.empty? }
params[:drop\u ship\u order\u line\u items]
返回以下散列:
{“11”=>{“可用”=>“1”},“2”=>{“可用”=>“1”}
但是模型似乎没有正确更新…有内部人员吗?AFAIK您不能在rails上这样更新模型,您必须这样做:
params[:drop_ship_order_line_items].each do |key,value|
DropShipOrderLineItem.find( key ).update_attributes( value )
end
编辑
代码中可能有一个attr_protected调用,您应该检查其中哪些属性受保护或不受保护
如果您认为您可以安全地忽略此特定呼叫的保护,您可以使用一些发送do out the magic(免责声明:这是您自己的,我只是在展示一种可能性):
这将克服属性保护,但你应该确保这是一个安全的调用,并且你不会因为这样做而自焚出于某种奇怪的原因,我只能像不允许任何批量更新一样使用update\u属性。好吧,编辑以添加一个跳过属性保护的解决方案。
params[:drop_ship_order_line_items].each do |key,value|
ship = DropShipOrderLineItem.find( key )
value.each do |property,value|
ship.send( "#{property}=", value )
end
ship.save
end