保存 Rails 模型的所有属性

Posted

技术标签:

【中文标题】保存 Rails 模型的所有属性【英文标题】:Save All Attributes of Rails Model 【发布时间】: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

保存购物车。

有没有办法保存模型的所有更新属性?

谢谢

【问题讨论】:

【参考方案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)

【讨论】:

以上是关于保存 Rails 模型的所有属性的主要内容,如果未能解决你的问题,请参考以下文章

Rails - 模型不通过方法保存属性,但如果手动分配(在控制台中)

Rails - 为 S3 迁移重新保存所有模型

为啥不能使用符号而不是字符串来访问 Rails 模型属性?

如何在 Rails 中发现模型属性?

Rails“多重继承”模型-具有另一个类的属性的ActiveRecord对象?

如何保存模型,而在Rails的运行回调