You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Entonces cada uno de estos grupos se asocia con el modelo Group
Customer.first.jobs.last.group
Customer Load (0.8ms) SELECT "customers".* FROM "customers" WHERE "customers"."deleted_at" IS NULL ORDER BY "customers"."id" ASC LIMIT $1 [["LIMIT", 1]]
Job Load (0.8ms) SELECT "jobs".* FROM "jobs" WHERE "jobs"."deleted_at" IS NULL AND "jobs"."customer_id" = $1 ORDER BY "jobs"."id" DESC LIMIT $2 [["customer_id", 1], ["LIMIT", 1]]
Group Load (2.1ms) SELECT "groups".* FROM "groups" WHERE "groups"."deleted_at" IS NULL AND "groups"."id" = $1 LIMIT $2 [["id", 3], ["LIMIT", 1]]
=>#<Group id: 3, name: "Admin", created_at: "2023-03-23 19:29:42", updated_at: "2023-03-23 19:29:42", customer_id: 1, deleted_at: nil, local_id: "71877852-23aa-43fa-8ed0-ea46ed4b76e2", threshold_quantity: nil>
Y un grupo es el que tiene un Rol, mediante la tabla intermedia RoleGroup
Customer.first.jobs.last.group.roles.first
Customer Load (1.2ms) SELECT "customers".* FROM "customers" WHERE "customers"."deleted_at" IS NULL ORDER BY "customers"."id" ASC LIMIT $1 [["LIMIT", 1]]
Job Load (0.7ms) SELECT "jobs".* FROM "jobs" WHERE "jobs"."deleted_at" IS NULL AND "jobs"."customer_id" = $1 ORDER BY "jobs"."id" DESC LIMIT $2 [["customer_id", 1], ["LIMIT", 1]]
Group Load (0.3ms) SELECT "groups".* FROM "groups" WHERE "groups"."deleted_at" IS NULL AND "groups"."id" = $1 LIMIT $2 [["id", 3], ["LIMIT", 1]]
Role Load (0.8ms) SELECT "roles".* FROM "roles" INNER JOIN "role_groups" ON "roles"."id" = "role_groups"."role_id" WHERE "role_groups"."group_id" = $1 ORDER BY "roles"."id" ASC LIMIT $2 [["group_id", 3], ["LIMIT", 1]]
=>#<Role id: 1, name: "container#read", created_at: "2023-03-23 19:29:39", updated_at: "2023-03-23 19:29:39">
Entonces un usuario pertenece a los perfiles/group cuando preguntamos por group
Customer.first.users.first.groups
Customer Load (0.6ms) SELECT "customers".* FROM "customers" WHERE "customers"."deleted_at" IS NULL ORDER BY "customers"."id" ASC LIMIT $1 [["LIMIT", 1]]
User Load (1.3ms) SELECT "users".* FROM "users" WHERE "users"."deleted_at" IS NULL AND "users"."customer_id" = $1 AND (auditor_level_id IS NULL OR auditor_level_id = 0) ORDER BY "users"."id" ASC LIMIT $2 [["customer_id", 1], ["LIMIT", 1]]
Group Load (0.8ms) SELECT "groups".* FROM "groups" INNER JOIN "admin_groups" ON "groups"."id" = "admin_groups"."group_id" WHERE "groups"."deleted_at" IS NULL AND "admin_groups"."adminable_id" = $1 AND "admin_groups"."adminable_type" = $2 LIMIT $3 [["adminable_id", 1], ["adminable_type", "User"], ["LIMIT", 11]]
=>#<ActiveRecord::Associations::CollectionProxy [#<Group id: 3, name: "Admin", created_at: "2023-03-23 19:29:42", updated_at: "2023-03-23 19:29:42", customer_id: 1, deleted_at: nil, local_id: "71877852-23aa-43fa-8ed0-ea46ed4b76e2", threshold_quantity: nil>]>
Supongamos que tengo un nuevo rol
Role.last
Role Load (1.4ms) SELECT "roles".* FROM "roles" ORDER BY "roles"."id" DESC LIMIT $1 [["LIMIT", 1]]
=>#<Role id: 105, name: "companies#index", created_at: "2023-06-07 21:39:16", updated_at: "2023-06-07 21:39:16">
Y quiero que un usuario de un cliente tenga permisos para el index de company, entonces se asociaria el Role con El grupo Admin ?, pero esto quiere decir que todos los jobs/grupos que pertenezcan al grupo Admin tendrian permisos de index sobre company? , Entonces al final yo le asigno permiso a un grupo en particular que tiene relacion con "grupos" que en realidad son jobs...
Pero en realidad lo que yo busco es agregarle permisos a un job por ejemplo quiero que el job Taker Group pueda tener acceso al Rol companies#index, eso quiere decir que con el modelo actual como un job pertenece a un grupo si yo le asigno esos permisos al Grupo admin todos los jobs que pertenezcan a este grupo tendran permisos, no seria mejor entonces asociar directamente los jobs con los roles?, mi idea es desplegar en un selector todos los jobs de un customer y a cada uno de ellos otorgarle permisos, entonces si un usuario esta dentro de esos jobs tiene acceso a X accion