Um usuário pode ter muitos votos. Um Vote pode ser um voto positivo ou negativo (usando herança de tabela única). Você poderia então ter um modelo de Recomendação que determina o que um usuário pode gostar dependendo dos votos positivos e negativos (encontrar artistas relacionados de votos positivos e subtrair artistas relacionados a votos negativos.) Um Usuário então poderia ter muitas Recomendações.