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

¿Fue útil?

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
scroll top