Evite classes de Deus no Rails

Uma maneira de evitar classes com muito conhecimento de nosso domínio é ter associações ActiveRecord assimétricas.

Por exemplo. Em nosso sistema de faturamento, temos um conjunto de faturas relacionadas a uma conta específica. Apenas faça:

class Invoice < ActiveRecord::Base
belongs_to
:account

def self.by_account(account)
where(account_id: account.id)
end
end

Observe que não declaramos que uma conta tem muitas faturas, porque essa classe não deve estar ciente desse conceito.

Isso tem um impacto em como estamos acostumados a usar APIs de AR: de account.invoicesa Invoice.by_account(account), que pode ser um pouco barulhento, mas com certeza tem a vantagem de manter suas classes mais leves.