authlogic e subdomain_fu: configurando corretamente o escopo
Esse é o pior tipo de erro que acontece: o que não está previsto nos seus testes. Recentemente passamos a usar o authlogic para validar a autenticação de usuários a alguns de nossos sistemas. A validação é muito boa e ainda facilita a criação de testes.
Porém, ao usar um subdomain-fu um erro estranho de validação de unicidade ocorria. Apesar de termos criado corretamente a validação de unicidade (validates_uniqueness_of), com o escopo correto de account_id (ou seja, apenas validando duplicidades existentes em uma mesma conta, começamos a ter falhas no ambiente de staging.
Sim, os testes previstos para verificar se a validação estava sendo criada com o escopo de account_id tinha sido criada corretamente usando o Remarkable. E isso tornava o erro em produção mais estranho ainda.
Após começar a tirar coisa por coisa, pensei que o culpado deveria ser o authlogic. Afinal, se o validates_uniqueness_of passasse a falhar a gente já teria ouvido uma chiadeira danada nos fóruns.
Indo direto para a conclusão, o que precisamos é passar um validations_scope como parâmetro para a inicialização do acts_as_authentic. O código fica como abaixo:
# authlogic
acts_as_authentic {|config| config.validations_scope = :account_id }
É óbvio que você não precisa usar o subdomain-fu para esse problema ocorrer. Qualquer escopo que você precisar passar como parâmetro para verificar a unicidade do usuário é suficiente para precisar desse bloco de configuração.


