Ruby on rails 如果未传入强参数,如何更新当前模型中的参数?
我有3个参数的模型销售(副本、售出的副本、剩余的副本) 我发现控制器是这样的: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
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,谢谢!我试试看