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

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – Rails / ActiveRecord:保存对模型相关集合的更改前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是否必须保存对模型集合中各个项目的修改,或者是否有一种方法可以在@R_117_301@时调用它来保存它们.

#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)

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

猜你在找的Ruby相关文章