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) 这也会自动保存,注意’!’在增量! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |