Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如果未传入强参数,如何更新当前模型中的参数?_Ruby On Rails - Fatal编程技术网

Ruby on rails 如果未传入强参数,如何更新当前模型中的参数?

Ruby on rails 如果未传入强参数,如何更新当前模型中的参数?,ruby-on-rails,Ruby On Rails,我有3个参数的模型销售(副本、售出的副本、剩余的副本) 我发现控制器是这样的: def update
 @selling = Selling.find(params[:id]) 
 @selling.update(selling_params) 
 render json: @selling
 end 

private 
def selling_params 
 params.require(:selling).permit(:copies, :selled_copies)
 en

我有3个参数的模型销售(副本、售出的副本、剩余的副本) 我发现控制器是这样的:

def update

  @selling = Selling.find(params[:id])

  @selling.update(selling_params)

  render json: @selling

end



private

def selling_params

  params.require(:selling).permit(:copies, :selled_copies)

end
当我发送带有两个参数(拷贝和已售出的拷贝)的修补程序请求时,我想更新当前模型中的另一个参数:剩余的拷贝(该值必须为:拷贝–已售出的拷贝),并且我也想将该值写入db。 您可以提示我如何在您的销售模式中实现此功能吗?

class Selling < ApplicationRecord
  after_update :count_remaining_copies

  def count_remaining_copies
   self.update_columns(remaining_copies: self.copies - self.selled_copies)
  end
end
班级销售
使用
update\u columns
而不是
update
,这样就不会无休止地触发此回调(堆栈级别太深错误)

我选择了更新后的
回调,但您可以使用另一个,请参见:

补丁
放置
的路径分开,这样它们都可以在
SellingController
中执行自己的操作。然后在
补丁
操作中执行
合并<代码>销售参数合并!({剩余拷贝:出售拷贝数[:拷贝数]-出售拷贝数[:出售拷贝数]})
@KevinEtore,谢谢!我试试看