Rails的版本: 的Rails 5.1.1爲什麼update_attributes不更新屬性,但更新呢?
紅寶石版本: 紅寶石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
。
然後,嘗試更新新創建的領域(姓氏)與其他領域,我用:
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]]
任何想法是怎麼回事?
添加少量觀察
a。它在10次或15次更新中隨機更新一次。
b。任何Puma多線程問題?
因爲這是奇怪['update_attributes'只是一個'alias'的'update'](https://github.com/rails /rails/blob/5-1-stable/activerecord/lib/active_record/persistence.rb#L289)你有什麼懷疑在模型中,可能已經重新定義該方法或東西? –
@SimpleLime我的用戶模型中沒有像attr_accessible這樣的定義。 – praaveen
@praaveen是'update_attributes'覆蓋某處?你可以嘗試調用'用戶。 'update_attributes'語句之前的reset_column_information'(僅用於測試目的)? – ulferts