Rails版本: Rails 5.1.1
Ruby版本: 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
属性:
rails log:
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
。
rails log:
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次更新一样随机更新。
湾美洲狮多线程有问题吗?
答案 0 :(得分:1)
我在JSONB字段中也遇到了类似的问题,该字段不希望使用update
甚至不使用update_attribute
保存。
我最终将要标记的字段标记为:
attribute_name_will_change!
那行得通! 希望有一天有帮助的人。
答案 1 :(得分:0)
如here所述,您可能面临一些访问者问题。
正如文章中所解释的那样:
执行以下操作将快乐返回true,但不会更新 状态属性。
@ user.update_attributes(:status =>'有效')