ruby-on-rails - 如何在不保存的情况下更新尚未保存的对象?
问题描述
所以我这样做:
@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
我遇到的问题是,当我调用它时.update!
,它实际上会在稍后@port_stock
保存记录。@port_stock.save
所以我的回调被执行了两次,这弄乱了我的数据库中的东西。
那么在显式调用它之前,如何在不实际保存对象的情况下更新new
实例呢?@port_stock.current_price
@port_stock
谢谢。
解决方案
如果您只更新一个属性,则可以使用 setter:
@port_stock.current_price = stock.price
或者你可以这样做:
stock = Stock.find(port_stock_params[:stock_id])
@port_stock = PortStock.new(port_stock_params.merge(current_price: stock.price))
推荐阅读
- reactjs - restful-react post 'mutate is not a function'
- sql-server - DELETE in table where 是 FK 引用当前表的 PK
- javascript - 如何使用从其他 URL 抓取的数据制作 Chrome 扩展程序?
- ionic-framework - 带有 imageMapResize 的离子响应页面
- android - 将自定义 etc 文件添加到 aosp build
- json - 使用 id 和密码连接到服务器
- c++ - 如何在 C++ 中读取 .raw 文件
- swift - 如何使用 swift 添加到 Cloud Firestore 中的我的地图字段
- python - 从熊猫中的对象中选择
- spring-boot - 何时使用 @RunWith 以及何时使用 @ExtendWith