3

Rails 版本: Rails 5.1.1

红宝石版本: ruby-2.4.0 [x86_64]

本地服务器:

Puma starting in single mode...
* Version 3.9.1 (ruby 2.4.0-p0), codename: Private Caller
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://0.0.0.0:3000

我有一个名为的现有模型User,后来我添加了属性last_name

然后,尝试用其他字段更新新创建的字段(last_name),我使用了:

user.update_attributes(first_name: 'praaveen', last_name:'vr')

对于,这会update_attributes更新first_name不会last_name更新属性:

导轨日志:

UPDATE "users" SET "updated_at" = $1, "first_name" = $2 WHERE "users"."id" = $3  [["updated_at", "2017-09-20 14:19:26.174311"], ["first_name", "praaveen"], ["id", 156]]

然后我尝试了:

user.update(first_name: 'praaveen', last_name:'vr')
user.update_columns(first_name: 'praaveen', last_name:'vr')

这些方法first_name last_name预期更新。

导轨日志:

UPDATE "users" SET "updated_at" = $1, "first_name" = $2, "last_name" = $3 WHERE "users"."id" = $4  [["updated_at", "2017-09-20   14:15:23.623292"], ["first_name", "praaveen"], ["last_name", "vr"], ["id", 156]]

知道发生了什么吗?

添加一些观察

一个。它会随机更新,例如 10 次或 15 次更新一次。

湾。puma多线程有问题吗?

4

2 回答 2

1

我在 JSONB 字段中遇到了类似的问题,该字段不想被保存,update甚至不想被保存update_attribute......

我最终将要更新的字段标记为:

attribute_name_will_change!

那行得通!希望有一天这可以帮助某人。

于 2020-10-05T15:31:16.213 回答
0

如此处所述,您可能会遇到一些访问器问题

如文章中所述:

执行以下操作将愉快地返回 true,但不会更新 status 属性。

@user.update_attributes(:status => '活动')

于 2017-09-24T08:03:28.007 回答