#ruby-on-rails #activerecord
#ruby-on-rails #activerecord
Вопрос:
Я обновляю атрибут (‘estado’) в приложении Rails, сообщений об ошибках нет. Отката нет, и ответ метода update даже true. Когда я проверяю запись, атрибут имеет старое значение.
[1] pry(#<Users::RegistrationsController>)> resource
=> #<User id: 18, email: "password2@mail.com", created_at: "2019-04-22 10:37:55", updated_at: "2019-04-22 10:37:55", shop_id: nil, seller: false, first_name: nil, last_name: nil, birthday: nil, nationality: nil, document_type: nil, document_number: nil, expiring_date: nil, estado: "pending", admin: false, provider: nil, uid: nil, facebook_picture_url: nil, token: nil, token_expiry: nil>
[2] pry(#<Users::RegistrationsController>)> resource.estado = "Accepted"
=> "Accepted"
[3] pry(#<Users::RegistrationsController>)> resource
=> #<User id: 18, email: "password2@mail.com", created_at: "2019-04-22 10:37:55", updated_at: "2019-04-22 10:37:55", shop_id: nil, seller: false, first_name: nil, last_name: nil, birthday: nil, nationality: nil, document_type: nil, document_number: nil, expiring_date: nil, estado: "pending", admin: false, provider: nil, uid: nil, facebook_picture_url: nil, token: nil, token_expiry: nil>
[4] pry(#<Users::RegistrationsController>)> resource.save
(0.3ms) BEGIN
↳ (pry):27
User Exists (0.8ms) SELECT 1 AS one FROM "users" WHERE "users"."email" = $1 AND "users"."id" != $2 LIMIT $3 [["email", "password2@mail.com"], ["id", 18], ["LIMIT", 1]]
↳ (pry):27
User Update (2.3ms) UPDATE "users" SET "encrypted_password" = $1, "updated_at" = $2 WHERE "users"."id" = $3 [["encrypted_password", "$2a$11$Pa2Dw8s53F8JSiO617Brxu2zuogK/Mffecokx0iKPnNJkVj05ZqsO"], ["updated_at", "2019-04-22 10:45:50.987192"], ["id", 18]]
↳ (pry):27
(6.0ms) COMMIT
↳ (pry):27
=> true
[5] pry(#<Users::RegistrationsController>)> resource
=> #<User id: 18, email: "password2@mail.com", created_at: "2019-04-22 10:37:55", updated_at: "2019-04-22 10:45:50", shop_id: nil, seller: false, first_name: nil, last_name: nil, birthday: nil, nationality: nil, document_type: nil, document_number: nil, expiring_date: nil, estado: "pending", admin: false, provider: nil, uid: nil, facebook_picture_url: nil, token: nil, token_expiry: nil>
[6] pry(#<Users::RegistrationsController>)>
Комментарии:
1. Можете ли вы добавить свою пользовательскую модель к вопросу?
Ответ №1:
Ваш атрибут не обновляется в экземпляре на шаге 2 (см. в 3), это означает, что с настройщиком что-то не так.
Это может быть из-за:
attr_accessor
/attr_writer
для:estado
- пользовательский установщик
estado=
не вызываетсяsuper(new_value)