Vote #79297
完了/users API does not accept boolean-like String values for generate_password
0%
説明
When creating a new user using the XML Rest API and the following XML, Redmine is not generating a new password.
test test test test@example.org true true
The @true@ value for @must_change_passwd@ works as expected, the one for @generate_password@ is ignored.
The reason for that is, that @must_change_passwd@ is a proper database column and ActiveRecord will translate certain expected values to Boolean @true@. Among these are @"1"@, @"true"@, and @true@. In contrast @generate_password@ is a virtual attribute, which is not backed by a database column. Redmine has its own code to handle the translation here. But this custom code only accepts @"1"@ and @true@, i.e it's missing the @"true"@ option.
The attached patch fixes this shortcoming by using ActiveRecord's translation method directly.
journals
Please note, that since Rails 5 the way how strings are converted to booleans has changed. Previously anything but a small well known list of values was considered @true@. Now anything but a small well know list of strings is considered @false@. Consequently, with the proposed change this would also be applied to the @generate_password@ field.
I think this would be a good thing, since it's improving consistency. But I wanted to mention it anyway.
--------------------------------------------------------------------------------
Confirmed the problem. Setting target version to 4.1.0.
--------------------------------------------------------------------------------
Committed. Thank you for detecting and fixing this issue.
--------------------------------------------------------------------------------