Olá, Luidi! Tudo certo?
Vamos lá:
Diferença entre escopos de modelo e de associação:
- Escopos de modelo são aplicados em chamadas estáticas ao modelo. Isso significa que você pode definir um conjunto de condições que serão aplicadas sempre que você fizer uma chamada ao modelo usando
scope. Por exemplo, Pessoa.scope('ativos').findAll() aplicaria as condições definidas no escopo 'ativos'. - Escopos de associação são aplicados automaticamente em instâncias do modelo. Eles são úteis quando você quer que certas condições sejam aplicadas sempre que uma associação for carregada. Por exemplo, ao definir uma associação entre
Pessoa e Curso, você pode aplicar um escopo que sempre traga apenas cursos ativos.
Escopo para "traga pessoas que estão pelo menos com o status de matriculado em um curso":
- Para essa situação, você provavelmente usaria um escopo de associação. Isso porque você está interessado em filtrar pessoas com base em uma condição relacionada a outra tabela (Curso). Você definiria um escopo na associação entre
Pessoa e Curso para garantir que apenas pessoas com status de "matriculado" sejam retornadas.
Espero ter ajudado e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.