【问题标题】:Save All Attributes of Rails Model保存 Rails 模型的所有属性
【发布时间】:2012-03-18 01:33:47
【问题描述】:
我有一个有很多购物车的用户模型
class User < ActiveRecord::Base
has_many :carts
如果我更新购物车:
User.last.carts.last.time_purchased = Time.now
有没有办法可以保存整个用户模型?现在,如果我打电话
User.last.save
我修改的购物车没有保存。
User.last.carts.last.save
保存购物车。
有没有办法保存模型的所有更新属性?
谢谢
【问题讨论】:
标签:
ruby-on-rails
model
save
【解决方案1】:
保存模型将保存它的任何关联,但这对您不起作用的原因是您重新获取 User 模型而不是修改和保存相同的实例.
user = User.last
user.carts.last.time_purchased = Time.now
user.save
保存用户还应保存关联的购物车。
【解决方案2】:
这是因为您正在获取购物车的副本,对其进行修改,然后获取购物车的另一个副本并保存那个。
您应该将购物车保存在一个变量中,然后对其应用保存。例如:
cart = User.last.carts.last
cart.time_purchased = Time.now
cart.save
或者,您可以使用 update_attribute,如下所示:
User.last.carts.last.update_attribute(:time_purchased, Time.now)