Em relação a usar o primeiro usuário do banco como anônimo, não está claro para quem lê.

Vejo duas formas de deixar isto claro:
- Dar esta responsabilidade para a classe de Usuário, por exemplo, fazendo-o responder a `User.anonymous` e retornar o usuário anônimo.
- Criar uma classe chamada `Anonymous` e fazê-la responder a `Anonymous.find` e retornar o usuário anônimo (que seria um User).

Ambas alternativas fariam o usuário anônimo ser retornado, caso ele ainda não exista no banco, ele deve ser criado. Para identificá-lo melhor, você pode atribuir um nome, email ou login para ele (vê qual se encaixa melhor com o login que tu vai implementar).