Triplo juntar-se em Ruby on Rails
-
10-07-2019 - |
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
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