Pergunta

Eu tenho pergunta sobre associações em Ruby on Rails. Na aplicação Há projetos, usuários, funções e grupos. O projeto pertence a um grupo com os usuários, um usuário pode pertencer a muitos grupos diferentes, mas só pode ter papel um específico dentro desse grupo. Por exemplo:

Em um grupo que o usuário é o proprietário do projeto, mas em outro grupo, ele é um escritor.

Qual é a melhor maneira de implementar isso usando o construído em funções no Rails?

Graças

Foi útil?

Solução

Aqui é um conjunto muito rápido de modelos que devem cumprir suas exigências:

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

Basicamente, há uma junção tabela que tem um usuário, grupo e ID de papel nele. Vou deixar as migrações como um exercício para o questionador

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top