2017-09-24 92 views
1

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_namelast_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_namelast_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多線程問題?

+0

因爲這是奇怪['update_attributes'只是一個'alias'的'update'](https://github.com/rails /rails/blob/5-1-stable/activerecord/lib/active_record/persistence.rb#L289)你有什麼懷疑在模型中,可能已經重新定義該方法或東西? –

+0

@SimpleLime我的用戶模型中沒有像attr_accessible這樣的定義。 – praaveen

+0

@praaveen是'update_attributes'覆蓋某處?你可以嘗試調用'用戶。 'update_attributes'語句之前的reset_column_information'(僅用於測試目的)? – ulferts

回答

0

您可能會遇到如here所述的訪問器故障。

正如在文章中解釋:

執行以下操作會歡快地返回true,但不會更新 狀態屬性。

@ user.update_attributes(:狀態=> '活性')

+0

感謝@Fabio但我沒有任何類似attr_accessible在我的用戶模型中定義。 – praaveen

+0

訪問器規定。我將有您使用的設計寶石猜測,所以你可以在這個答案所描述的配置吧: https://stackoverflow.com/a/19793371/4604645 –

+0

@fabio設計沒有這個模型 – praaveen

相關問題