Pour des raisons de sécurité, vous ne pourrez peut-être pas utiliser la console rails en production. Lors de l'examen des données enregistrées à ce moment, je pense que vous pouvez enquêter sur Redash, etc. avec SQL de BI Tool. Je vais résumer comment afficher l'énumération à ce moment-là d'une manière facile à lire.
Le rôle est défini dans enum comme suit:
enum role: { user: 1, admin: 9 }
Je vais enquêter sur les données comme ça.
name | role |
---|---|
test_1 | 1 |
test_2 | 1 |
admin_1 | 9 |
admin_2 | 9 |
Puisqu'il s'agit de SQL pour l'investigation, utilisez des sous-requêtes sans vous soucier de la vitesse.
SELECT td.name, td.role, enum_code.name
FROM test_data AS td
JOIN
(
SELECT 'user' AS name, 0 AS code UNION ALL
SELECT 'admin' AS name, 9 AS code
) AS enum_code
ON td.role = enum_code.code;
Vous devriez voir le nom du rôle avec le résultat suivant:
name | role | role_name |
---|---|---|
test_1 | 0 | user |
test_2 | 0 | user |
admin_1 | 9 | admin |
admin_2 | 9 | admin |
Ce qui suit est un aparté, mais je voudrais expliquer des informations supplémentaires.
SELECT 'user' AS name, 0 AS code
Vous pouvez créer une table temporaire
comme celle-ci en exécutant.
name | code |
---|---|
user | 0 |
J'ai fait plusieurs lignes et les ai jointes ligne par ligne avec ʻUNION ALL`.
name | code |
---|---|
user | 0 |
admin | 9 |
Ensuite, JOIN joint par colonne.
name | role | role_name |
---|---|---|
test_1 | 0 | user |
test_2 | 0 | user |
admin_1 | 9 | admin |
admin_2 | 9 | admin |
https://oss-db.jp/dojo/dojo_09
Dans MySQL et PostgreSQL, vous pouvez écrire des instructions SQL sans FROM
.
Puisque FROM ne peut pas être omis dans Oracle et DB2, utilisez «FROM dual».
SELECT 'user' AS name, 0 AS code FROM dual;
https://docs.oracle.com/cd/E16338_01/server.112/b56299/queries009.htm https://www.ibm.com/support/knowledgecenter/ja/SSEPGG_11.1.0/com.ibm.db2.luw.apdv.porting.doc/doc/r0052874.html
Puisque PostgreSQL peut utiliser la clause with, vous pouvez d'abord écrire une table temporaire. Cette méthode d'écriture est utilisée lors de la création d'une requête pour l'agrégation car le traitement peut être suivi dans l'ordre du haut. Dans le cas de MySQL, il semble qu'il puisse être utilisé à partir de la version 8.0.
WITH enum_code AS (
SELECT 'user' AS name, 0 AS code UNION ALL
SELECT 'admin' AS name, 9 AS code
)
SELECT td.name, td.role, enum_code.name AS role_name
FROM test_data AS td
JOIN enum_code
ON td.role = enum_code.code;
https://www.postgresql.jp/document/12/html/queries-with.html https://dev.mysql.com/doc/refman/8.0/en/with.html