为什么update_attributes不更新属性,但更新呢?
问题描述:
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