В date_select, 2 добавляется к «day», когда 0 помещается в «year» - PullRequest
0 голосов
/ 03 апреля 2019

Rails 5.2.2.1
Я думаю, вы не понимаете, что я говорю, я помещаю журнал и объясняю это.

Журнал

[INFO]2019-04-03 17:36:37 +0900:  : Started PATCH "/users/43" for ::1 at 2019-04-03 17:36:37 +0900
[INFO]2019-04-03 17:36:37 +0900:  : Processing by UsersController#update as HTML
[INFO]2019-04-03 17:36:37 +0900:  :   Parameters: {"utf8"=>"✓", "authenticity_token"=>"5cFNucU6SLuSUeiSvu4QCRy7MvQ8BycoFF8wvfnbQ4tebelTt6U22hEFKiSAe7poNtdpBOY3k8SmtyUXez4lGA==", "user"=>{"user_image_attributes"=>{"id"=>"57"}, "name"=>"test", "user_info_attributes"=>{"sex"=>"", "birth_day(2i)"=>"1", "birth_day(3i)"=>"11", "birth_day(1i)"=>"0", "id"=>"3", "introduction"=>""}}, "commit"=>"Update", "id"=>"43"}
[DEBUG]2019-04-03 17:36:37 +0900:  :   User Load (1.1ms)  SELECT  `users`.* FROM `users` WHERE `users`.`id` = 43 ORDER BY `users`.`id` ASC LIMIT 1
[DEBUG]2019-04-03 17:36:37 +0900:  :   ↳ /Users/hasegawawataru/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activerecord-5.2.2.1/lib/active_record/log_subscriber.rb:98
[DEBUG]2019-04-03 17:36:37 +0900:  :   User Load (0.4ms)  SELECT  `users`.* FROM `users` WHERE `users`.`id` = 43 LIMIT 1
[DEBUG]2019-04-03 17:36:37 +0900:  :   ↳ app/controllers/users_controller.rb:40
[DEBUG]2019-04-03 17:36:37 +0900:  :    (0.2ms)  BEGIN
[DEBUG]2019-04-03 17:36:37 +0900:  :   ↳ app/controllers/users_controller.rb:41
[DEBUG]2019-04-03 17:36:37 +0900:  :   UserImage Load (0.5ms)  SELECT  `user_images`.* FROM `user_images` WHERE `user_images`.`user_id` = 43 LIMIT 1
[DEBUG]2019-04-03 17:36:37 +0900:  :   ↳ app/controllers/users_controller.rb:41
[DEBUG]2019-04-03 17:36:37 +0900:  :   UserInfo Load (0.4ms)  SELECT  `user_infos`.* FROM `user_infos` WHERE `user_infos`.`user_id` = 43 LIMIT 1
[DEBUG]2019-04-03 17:36:37 +0900:  :   ↳ app/controllers/users_controller.rb:41
[DEBUG]2019-04-03 17:36:37 +0900:  :   User Load (0.4ms)  SELECT  `users`.* FROM `users` WHERE `users`.`id` = 43 LIMIT 1
[DEBUG]2019-04-03 17:36:37 +0900:  :   ↳ app/models/application_record.rb:56
[DEBUG]2019-04-03 17:36:37 +0900:  :   CACHE User Load (0.0ms)  SELECT  `users`.* FROM `users` WHERE `users`.`id` = 43 LIMIT 1  [["id", 43], ["LIMIT", 1]]
[DEBUG]2019-04-03 17:36:37 +0900:  :   ↳ app/models/application_record.rb:56
[DEBUG]2019-04-03 17:36:37 +0900:  :   UserInfo Update (0.3ms)  UPDATE `user_infos` SET `sex` = '', `birth_day` = '0000-01-13', `updated_at` = '2019-04-03 08:36:37' WHERE `user_infos`.`id` = 3
[DEBUG]2019-04-03 17:36:37 +0900:  :   ↳ app/controllers/users_controller.rb:41

Подробно

Line 3<br>
"user_info_attributes"=>{"sex"=>"", "birth_day(2i)"=>"1", "birth_day(3i)"=>"11", "birth_day(1i)"=>"0", "id"=>"3", "introduction"=>""}

1i = год
2i = месяц
3i = день
В журнале указано, что параметр имени_ дня рождения равен 0000-01-11 (год-месяц-день).

Line 18<br>
[DEBUG]2019-04-03 17:36:37 +0900:  :   UserInfo Update (0.3ms)  UPDATE `user_infos` SET `sex` = '', `birth_day` = '0000-01-13', `updated_at` = '2019-04-03 08:36:37' WHERE `user_infos`.`id` = 3

Однако в базе данных зарегистрировано «день» плюс 2.
Если 1i (год) не 0, а 1990 и т. Д., Оно будет успешно зарегистрировано без плюса 2.

Обнаружениеhistory

Я обнаружил в тесте при обновлении с Rails 5.2.2 до 5.2.2.1, но я не знаю, является ли это причиной.
Однако, когда была введена функция date_select, онаработал без проблем.

Есть идеи об этой ошибке?

1 Ответ

0 голосов
/ 03 апреля 2019

Кажется, проблема с БД больше, чем у Rails, поскольку запрос на обновление корректно сформирован. Возможно, ваша БД не может правильно обработать год 0.

Проверка UPDATE user_infos SET sex = '', birth_day = '0000-01-13', updated_at = '2019-04-03 08:36:37' WHERE user_infos.id = 3 в вашем клиенте БД.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...