Create table user_credit_card_validations
What does this MR do?
Related to issue: https://gitlab.com/gitlab-org/gitlab/-/issues/329141
This MR: create a new table user_credit_card_validations
, and add/update model files(User, UserCreditCardValidation) accordingly.
Why create a new table?
We need to save a new timestamp information (credit_card_validated_at
) for user. This information will be used to reduce the abuse of CI pipeline usage. We choose to create a new table user_credit_card_validations
, instead of adding a new column credit_card_validated_at
directly to users
table. Because:
- We have >8M users today in production DB. Only small number of users will need to verify their credit card, which means for most users, their credit_card_validated_at will be null.
- We try to avoid adding new columns to users, because it already has too many columns.
Migration output
$ bin/rails db:migrate
== 20210429131525 CreateUserCreditCardValidations: migrating ==================
-- create_table(:user_credit_card_validations, {:id=>false})
-> 0.0201s
== 20210429131525 CreateUserCreditCardValidations: migrated (0.0253s) =========
$ bin/rails db:rollback
== 20210429131525 CreateUserCreditCardValidations: reverting ==================
-- drop_table(:user_credit_card_validations)
-> 0.0026s
== 20210429131525 CreateUserCreditCardValidations: reverted (0.0101s) =========
Screenshots (strongly suggested)
Does this MR meet the acceptance criteria?
Conformity
-
📋 Does this MR need a changelog?-
I have included a changelog entry. -
I have not included a changelog entry because _____.
-
-
Documentation (if required) -
Code review guidelines -
Merge request performance guidelines -
Style guides -
Database guides -
Separation of EE specific content
Availability and Testing
-
Review and add/update tests for this feature/bug. Consider all test levels. See the Test Planning Process. -
Tested in all supported browsers -
Informed Infrastructure department of a default or new setting change, if applicable per definition of done
Security
If this MR contains changes to processing or storing of credentials or tokens, authorization and authentication methods and other items described in the security review guidelines:
-
Label as security and @ mention @gitlab-com/gl-security/appsec
-
The MR includes necessary changes to maintain consistency between UI, API, email, or other methods -
Security reports checked/validated by a reviewer from the AppSec team
Edited by Qingyu Zhao