加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails / ActiveRecord:保存对模型相关集合的

发布时间:2020-12-17 04:31:37 所属栏目:百科 来源:网络整理
导读:我是否必须保存对模型集合中各个项目的修改,或者是否有一种方法可以在保存模型时调用它来保存它们. #save似乎没有这样做.例如: irb rental = #...#= #Rental id: 18737,customer_id: 61,dvd_id: 3252,date_rented: "2008-12-16 05:00:00",date_shipped: "20
我是否必须保存对模型集合中各个项目的修改,或者是否有一种方法可以在保存模型时调用它来保存它们.

#save似乎没有这样做.例如:

irb> rental = #...
#=> #<Rental id: 18737,customer_id: 61,dvd_id: 3252,date_rented: "2008-12-16 05:00:00",date_shipped: "2008-12-16 05:00:00",date_returned: "2008-12-22 05:00:00">
irb> rental.dvd
#=> #<Dvd id: 3252,title: "The Women of Summer",year: 1986,copies: 20,is_new: false,is_discontinued: false,list_price: #<BigDecimal:1a48f0c,'0.1599E2',8(8)>,sale_price: #<BigDecimal:1a48ed0,8(8)>>
irb> rental.dvd.copies += 1
#=> 21
irb> rental.save
#=> true
irb> rental.dvd
#=> #<Dvd id: 3252,copies: 21,list_price: #<BigDecimal:1a2e9cc,sale_price: #<BigDecimal:1a2e97c,8(8)>>
irb> Dvd.find_by_title('The Women of Summer')
#=> #<Dvd id: 3252,list_price: #<BigDecimal:1a30164,sale_price: #<BigDecimal:1a30128,8(8)>>

在上面的示例中,租借的DVD副本似乎没有更新DB中的副本(请注意不同的副本数).

解决方法

只需在增加值后执行rental.dvd.save,或者在上面的情况下可以使用
rental.dvd.increment!(:copies)

这也会自动保存,注意’!’在增量!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读