mar*_*ion 0 ruby ruby-on-rails ruby-on-rails-5
所以我这样做:
@portfolio = current_user.portfolio
@port_stock = PortStock.new(port_stock_params)
stock = Stock.find(port_stock_params[:stock_id])
@port_stock.update!(current_price: stock.price)
respond_to do |format|
if @port_stock.save
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,当我打电话时.update!,@port_stock它实际上会在@port_stock.save以后保存记录.
所以我的回调正在执行两次,这会弄乱我的数据库中的东西.
那么在我明确地调用它之前如何new在@port_stock.current_price不实际保存@port_stock对象的情况下更新实例呢?
谢谢.
如果您只更新一个属性,则可以使用setter:
@port_stock.current_price = stock.price
Run Code Online (Sandbox Code Playgroud)
或者你可以这样做:
stock = Stock.find(port_stock_params[:stock_id])
@port_stock = PortStock.new(port_stock_params.merge(current_price: stock.price))
Run Code Online (Sandbox Code Playgroud)
尝试assign_attributes,它接受哈希作为参数,不要点击数据库,它只适用于对象
@port_stock.assign_attributes(current_price: stock.price)
Run Code Online (Sandbox Code Playgroud)
显然,如果你只想更新一个字段,@ Sergio的答案会更好更简单
| 归档时间: |
|
| 查看次数: |
77 次 |
| 最近记录: |