Triple unión en Ruby on Rails
-
10-07-2019 - |
Pregunta
Tengo una pregunta sobre las asociaciones en Ruby on Rails. En la aplicación hay proyectos, usuarios, roles y grupos. El proyecto pertenece a un grupo con usuarios, un usuario puede pertenecer a muchos grupos diferentes pero solo puede tener un rol específico dentro de ese grupo. Por ejemplo:
En un grupo, el usuario es el propietario del proyecto, pero en otro grupo es escritor.
¿Cuál es la mejor manera de implementar esto usando las funciones integradas en Rails?
Gracias
Solución
Aquí hay un conjunto muy rápido de modelos que deben cumplir con sus requisitos:
class User < ActiveRecord::Base
has_many :group_memberships
has_many :groups, :through => :group_memberships
end
class GroupMembership < ActiveRecord::Base
belongs_to :user
belongs_to :role
belongs_to :group
end
class Role < ActiveRecord::Base
has_many :group_memberships
end
class Group < ActiveRecord::Base
has_many :group_memberships
has_many :users, :through > :group_memberships
end
Básicamente, hay una tabla de unión que tiene una identificación de usuario, grupo e rol. Dejaré las migraciones como ejercicio para el interrogador
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow