Ruby · Essencial · Português · Técnico
método de classe
Método chamado diretamente na classe, não nas instâncias. Define-se com def self.nome e serve para fábricas, buscas e utilidades ligadas à classe.
Onde usar
É o que vemos em Pedido.find(1) ou Usuario.padrao. Em Rails, é onde ficam buscas e scopes, enquanto o estado de cada registro fica nos métodos de instância.
Em código
class Usuario
def self.padrao = new('convidado')
def initialize(nome)
@nome = nome
end
end
p Usuario.padrao.class # => UsuarioExemplos
Vou criar um método de classe para montar o objeto padrão.
Esse método de classe faz a busca e devolve as instâncias.
Cuidado
Não confunda com método estático do Java: em Ruby a classe é um objeto, e o método de classe é um método singleton dela.
Sinônimos
método estático
Antônimos
método de instância